1

2 つのファイルを比較したい。ファイル1.txt ファイル2.txt

file1.txt

name1
name2
name3

file2.txt

nameA
nameB
name1
nameC

grep を使用して 2 つのファイルを確認し、name1 が両方のファイルに含まれているとします。どうすればいいですか?

4

5 に答える 5

3

Try

grep -f file1.txt file2.txt

From man:

-f FILE, --file=FILE Obtain patterns from FILE, one per line. The empty file contains zero patterns, and therefore matches nothing. (-f is specified by POSIX.)

于 2012-11-20T15:56:35.397 に答える
1

Using comm(1) :

 comm -1 -2 <(sort file1.txt) <(sort file2.txt)

OUTPUT

name1

EXPLANATIONS

`-1 -2 means to suppress column 1 & 2, and keeping only the intersect.


NAME

    comm - compare two sorted files line by line
于 2012-11-20T15:57:05.490 に答える
0

You can use the -f option in grep to feed the first file in as a "file of patterns", and perform grep on the second file as the actual search space:

grep -f file1.txt file2.txt

Breakdown:

  • grep: invoke the grep tool
  • -f file1.txt: specify file1.txt as the file that holds your search patterns
  • file2.txt: name of the file to be used for your search space.
于 2012-11-20T15:57:06.393 に答える
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」の内容をメモリに保存しないため、メモリ効率が高く高速です。

于 2012-11-20T15:58:25.733 に答える
0

diff を使用してファイルを比較できます。

diff file1.txt file2.txt

于 2012-11-20T15:59:00.070 に答える