-1

这两个文件都已排序并删除了重复项。我想将file1中的field1与file2的field1进行比较,并输出file1中不在file2中的行。field1 没有设置长度,这导致我使用 uniq 出现问题。

以下是数据示例:

文件1:

UUID(78-d55) NODETYPE(B) 22:42:05  
UUID(78-d51) NODETYPE(B) 22:42:05
UUID(78-dca) NODETYPE(B) 22:42:37
UUID(78-494) NODETYPE(B) 22:42:37
UUID(dp@20181206003956969) NODETYPE(B)  00:39:56

文件2:

UUID(78-d55) NODETYPE(B) POLNODE(/inbound/us)   
UUID(78-74e) NODETYPE(B) POLNODE(/inbound/us) 
UUID(78-053) NODETYPE(B) POLNODE(/inbound/us)     
UUID(78-5d6) NODETYPE(B) POLNODE(/inbound/us)    
UUID(78-dca) NODETYPE(B) POLNODE(/inbound/us)   
UUID(78-b0b) NODETYPE(B) POLNODE(/inbound/us)    
UUID(dp@20181206003956969) NODETYPE(B)  POLNODE(/inbound/us) 

我想要的是:

UUID(78-d51) NODETYPE(B) 22:42:05 
UUID(78-494) NODETYPE(B) 22:42:37 
4

1 回答 1

1

看起来像是一份工作join——以及它的-v选择:

$ join -v1 file1 file2
UUID(78-d51) NODETYPE(B) 22:42:05
UUID(78-494) NODETYPE(B) 22:42:37
$

请注意,这取决于正在排序的文件,如前所述,连接列是每个文件中的第 1 列,以及由空格或制表符分隔的字段。如有必要,这些中的每一个都可以通过额外的选项进行更改。

它也可以在 Awk 中轻松完成——以及在 Perl 和 Python 以及……其他可编写脚本的语言中。

于 2018-12-15T23:53:55.697 回答