Shell 比较两个文件,打印第二个文件中不变的第一个单词
我有文件a,内容如下:Shell 比较两个文件,打印第二个文件中不变的第一个单词,shell,Shell,我有文件a,内容如下: 12345:$gfdgfgfgfgfgfgfdgdgfgfdgfdg/:17436:0:99999:7::: 67890:$kjhwhkjhwekjrhwkejhwkjehkjl/:17433:0:99999:7::: 14567:$aaaaaaaaaaaaaaaaaaaaaaaaaaa/:17437:0:99999:7::: 我有文件b,内容如下 12345:$gfdgfgfgfgfgfgfdgdgfgfdgfdg/:17436:0:99999:7::: 14567:
12345:$gfdgfgfgfgfgfgfdgdgfgfdgfdg/:17436:0:99999:7:::
67890:$kjhwhkjhwekjrhwkejhwkjehkjl/:17433:0:99999:7:::
14567:$aaaaaaaaaaaaaaaaaaaaaaaaaaa/:17437:0:99999:7:::
我有文件b,内容如下
12345:$gfdgfgfgfgfgfgfdgdgfgfdgfdg/:17436:0:99999:7:::
14567:$bbbbbbbbbbbbbbbbbbbbbbbbbbb/:17437:0:99999:7:::
67890:$ccccccccccccccccccccccccccc/:17433:0:99999:7:::
我想比较文件A和文件B。如果fileB中的任何行与fileA相比没有变化,那么我想打印该行的第一个字
因此,根据我上面给出的示例,输出应该如下所示
12345
我用diff
和comm
试试运气。但是,fileB中的行的显示顺序可能与fileA中的行不同
任何帮助都将不胜感激。此awk one liner将完成以下工作:
grep -f fileA fileB | awk -F: '{print $1}'
awk -F':' 'NR==FNR{a[$0]=1;next}a[$0]{print $1}' fileA fileB
此awk一衬板应能完成以下工作:
awk -F':' 'NR==FNR{a[$0]=1;next}a[$0]{print $1}' fileA fileB
这是如何处理文件顺序的?如果fileA中的内容具有
*
?由于OP没有显示此类数据,我省略了这些情况。但是你是对的,该方法不能在FileA中为regex采用特殊字符。这如何处理文件的顺序?如果FileA中的内容有*
?由于OP没有显示此类数据,我省略了这些情况。但是您是对的,该方法不能在FileA中为regex采用特殊字符。