Unix命令在一个文件中查找行,而在另一个文件中找不到该键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix命令在一个文件中查找行,而在另一个文件中找不到该键相关的知识,希望对你有一定的参考价值。

两个文件都已排序并重复删除。我想将file1中的field1与file2的field1进行比较,并输出file2中不在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 
答案

看起来像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以及其他可编写脚本的语言。

以上是关于Unix命令在一个文件中查找行,而在另一个文件中找不到该键的主要内容,如果未能解决你的问题,请参考以下文章

理解Unix可执行文件

Unix命令查找两个文件中常见的行

无法导入模块:在工作文件中找不到模块,但在另一个文件中工作正常

在 UNIX 文件系统中查找数值的最佳方法 [重复]

在另一个声音文件中查找一个声音文件

我在unix下运行linux的命令,但是一直大部分都提示找不到文件