我想比较两个文件的$ 1,$ 2列的尴尬列。如果从第二个文件中进行相同的打印,如果不是同一print,则第一个文件中的全部打印。
第一文件:
a 1 2
b 2 3
c 3 4
第二文件:
a 1 2 ko lo to
b 2 3 to ho ro
结果:
a 1 2 ko lo to
b 2 3 to ho ro
c 3 4
所以我想添加与第二个文件不匹配的第一个文件的行。
我写道:
awk -v OFS="t" 'FNR==NR{a[$1]=$2=$3;next} {if (($1,$2) in a) print a[$1,$2,$3]; else print $0}'
但这不起作用:-(谢谢。
awk
to Rescue!
$ awk '!a[$1,$2]++' file2 file1
a 1 2 ko lo to
b 2 3 to ho ro
c 3 4
不过,这不会保留订单(它将首先打印File2目录)。另一个选择是
$ awk '{k=$1 FS $2}
NR==FNR {a[k]=$0; next}
{print (k in a?a[k]:$0)}' file2 file1