我想比较file1和file2的前4列。我想打印file1中的所有行+ file2中不在file1中的行。
File1:
2435 2 2 7 specification 9-8-3-0
57234 1 6 4 description 0-0 55211
32423 2 44 3 description 0-0 24242
File2:
2435 2 2 7 specification
7624 2 2 1 namecomplete
57234 1 6 4 description
28748 34 5 21 gateway
32423 2 44 3 description
832758 3 6 namecomplete
output:
2435 2 2 7 specification 9-8-3-0
57234 1 6 4 description 0-0 55211
32423 2 44 3 description 0-0 24242
7624 2 2 1 namecomplete
28748 34 5 21 gateway
832758 3 6 namecomplete
我不明白如何打印不匹配的东西。
答案 0 :(得分:2)
您可以使用这样的awk脚本执行此操作:
<强> script.awk 强>
FNR == NR { mem[ $1 $2 $3 $4 $5 ] = 1;
print
next
}
{ key = $1 $2 $3 $4 $5
if( ! ( key in mem) ) print
}
并按照以下方式运行:awk -f script.awk file1 file2
。
第一部分记忆前5个字段,打印整行并移动到下一行。此部分专门应用于第一个文件中的行。
第二部分仅适用于第二个文件中的行。它会检查该行是否不在mem
中,在这种情况下,该行不在file1中并打印出来。