0

以下のようなレコードを含む 2 つのファイルがあります。

File1:

1,2,3,a|x|z,4,5

File2:

1,2,3,a|x|z,4,5
1,2,3,a|x|z,4,5
1,2,3,a|x|z,4,5
1,2,3,a|x|z,4,5

で区切られた 6 つのフィールドがあります。,

a|x|zの 2 行目、3 行目、4 行目の 4 番目のフィールド (つまり ) をFile2それぞれ a、x、zに置き換えるにはどうすればよいですかFile1

私の本当の問題は、4番目のフィールドが常にあるとは限りませんa|x|zが、常に|分離されていることです

私の考えた出力は以下のようになります。

File2:

1,2,3,a|x|z,4,5
1,2,3,a,4,5
1,2,3,x,4,5
1,2,3,z,4,5
4

1 に答える 1

1
$ awk 'FNR==NR{split($4,f1,"|");next}FNR>1{$4=f1[FNR-1]}1' FS=, OFS=, file1 file2
1,2,3,a|x|z,4,5
1,2,3,a,4,5
1,2,3,x,4,5
1,2,3,z,4,5

file1 注: これは、つまり 3のサブフィールドの数が、file2 再び 3 (行 2、3、4)で置き換えられる行の数に等しいと仮定しています。そうでない場合は、サブ フィールドの数がまだ 3 であるが、ファイルの行数が 10 である場合にどうなるかを説明する必要があります。

于 2013-04-06T21:58:10.823 に答える