我想比较两个文件。 file1.txt file2.txt
FILE1.TXT
name1
name2
name3
FILE2.TXT
nameA
nameB
name1
nameC
我想用grep查看这两个文件,并说name1在两个文件中。 我该怎么做?
答案 0 :(得分:3)
尝试
grep -f file1.txt file2.txt
来自男人:
-f FILE, - file = FILE 从FILE获取模式,每行一个。空文件包含零模式,因此不匹配任何内容。 (-f是 由POSIX指定。)
答案 1 :(得分:1)
使用comm(1)
:
comm -1 -2 <(sort file1.txt) <(sort file2.txt)
<强>输出强>
name1
<强>说明强>
`-1 -2表示禁止第1列和第1列。 2,只保留相交。
NAME
comm - compare two sorted files line by line
答案 2 :(得分:0)
您可以使用-f
中的grep
选项将第一个文件作为“模式文件”提供,并在第二个文件上执行grep
作为实际搜索空间:
grep -f file1.txt file2.txt
故障:
grep
:调用grep工具-f file1.txt
:指定file1.txt
作为保存搜索模式的文件file2.txt
:用于搜索空间的文件名称。答案 3 :(得分:0)
Set在python中用于比较列表非常有用。
>>> f1 = set( l.strip() for l in open('file1.txt'))
>>> f2 = set( l.strip() for l in open('file2.txt'))
>>> print "\n".join( f1 & f2)
name1
它也可以生成差异:
>>> print "\n".join( f1 - f2)
name2
name3
>>> print "\n".join( f2 - f1)
nameB
nameC
nameA
正如@Jon Clements建议的那样,如果你关心表演,请使用以下表格:
f1 = set( l.strip() for l in open('file1.txt'))
common = f1.intersection(l for l in open('file2.txt'))
print "\n".join( common )
内存效率更高,速度更快,因为它不会将“file2.txt”的内容存储在内存中。
答案 4 :(得分:0)
您可以使用diff来比较文件。
diff file1.txt file2.txt