AWK - 匹配Field1,排除最后一个字段,如果两者之间的字段不匹配则打印行

时间:2018-04-11 15:34:20

标签: awk

我有两个文件。我想比较两个文件并使用field1进行匹配。我想排除最后一个字段进行比较。如果两者之间的所有字段都不匹配,则打印两行并返回。行可以在第一个和最后一个之间具有不同数量的字段。

File1中

LSP0    NODE0   NODE4   NODE3   591
LSP1    NODE1   NODE2   NODE3   725
LSP2    NODE4   NODE5   515
LSP3    NODE2   NODE4   NODE3   NODE6   725

文件2

LSP0    NODE0   NODE4   NODE5   NODE3   515
LSP1    NODE1   NODE2   NODE3   576
LSP2    NODE4   NODE5   615
LSP3    NODE2   NODE1   614

输出

LSP0    NODE0   NODE4   NODE3   591
LSP0    NODE0   NODE4   NODE5   NODE3   515

LSP3    NODE2   NODE4   NODE3   NODE6   725
LSP3    NODE2   NODE1   614

1 个答案:

答案 0 :(得分:1)

Awk 解决方案:

awk '{ 
         rec1 = $0; $NF = ""; trimmed = $0; getline < "file2"; rec2 = $0; $NF = ""; 
         print ($0 != trimmed? rec1 ORS rec2 : "")
     }' file1

输出:

LSP0    NODE0   NODE4   NODE3   591
LSP0    NODE0   NODE4   NODE5   NODE3   515


LSP3    NODE2   NODE4   NODE3   NODE6   725
LSP3    NODE2   NODE1   614