我有两个包含以下记录的文件:
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
中的a,x和z分别替换File2
的第2行,第3行和第4行中的第4个字段(即File1
)。
我真正的问题是,第四个字段不会总是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
答案 0 :(得分: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,会发生什么?