我有两个文件:
文件1.txt:
111|aaa|444
222|bbb|555
333|ccc|666
文件2.txt:
111
(null)
333
将 file1 的第二列替换为 file2 的第一列
预期输出
新的:
111|111|444
222||555
333|333|666
我正在使用以下命令,
awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}$A = a[FNR]' B=1 A=2 file2.txt file1.txt > new.txt
我得到的输出,
新的:
111|111|444
333|333|666
我失去了第二个记录。如何避免记录丢失?
答案1
awk 'BEGIN {FS=OFS="|"}NR == FNR {a[FNR] = $B;next}{$A = a[FNR];print $0}' B=1 A=2 f2 f1
答案2
或者,您可以使用paste
andcut
为此:
paste -d'|' <(cut -d'|' -f1 file1) <(cat file2) <(cut -d'|' -f3 file2)
不过,我无法判断哪个在速度方面更好。