查找两个文件中的重复项

查找两个文件中的重复项

我需要创建从一个文件读取行的脚本,并检查第二个文件中是否存在该行。如何处理文件中的特殊字符,例如:'、" 和 \?

第一个文件:

a.txt
aa
bb
cc
f
'f'
"g"
'h'

第二个文件:

b.txt
cc
dd
'f'
"g"
g
h

命令:

cat a.txt | xargs -I{} grep -w {} b.txt

返回:

cc
'f'
'f'
"g"
g  <- it shouldn't be there
h  <- it shouldn't be there

预期的:

cc
'f'
"g"

就我而言,不应列出最后一项 (h),因为 a.txt 文件中不存在此项。只有“h”(单引号)。我该如何通用地处理这个问题,以防止将来发生意外情况?

答案1

这就是该comm实用程序的用途。一般来说,您可以执行这一行来对输入文件进行排序并将它们提供给comm.这些-12选项意味着抑制文件 1 和 2 特有的行,仅显示公共行。

comm -12 <(sort a.txt) <(sort b.txt)

cc
'f'
"g"

相关内容