我想在awk中比较$ 1,$ 2列的两个文件。如果相同的打印全部来自第二个文件,如果不相同则从第一个文件打印。
第一档:
a 1 2
b 2 3
c 3 4
第二档:
1 2 ko lo to
b 2 3 to ho ro
结果:
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}'
但它不起作用:-( 谢谢。
答案 0 :(得分:3)
awk
救援!
$ 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