2011-05-14 11 views
1

と2つのテキストファイルを比較:は、例えば、互いに

FILE1.TXT

apple 
orange 
pear 
banana 

FILE2.TXT

banana 
pear 

がどのように私はすべてのフレーズを取る

file1.txtからfile2.txtの行にある

したがって、file1.txtは次のようになります。

FILE2.TXT -
apple 
orange 

答えて

0
combine file1 not file2 

Debianと派生商品では、combineはmoreutilsパッケージにあります。

1
grep -v -F -f file2.txt file1.txt 

-vは、この場合には、ファイルからパターンを取ったパターンと一致しないFILE1.TXTのラインだけをリストアップし、-f手段を意味します。そして-F - PATTERNを改行で区切られた固定ストリングのリストとして解釈します。

grepコマンドは、OS XおよびLinuxに組み込まれています。 Windowsでは、インストールする必要があります。例えばCygwinを介して。

+0

これは、file2.txtのエントリを正規表現として解釈します。もしfile2が、例えば、 '。*'、これは動作しません。 –

+0

真。ありがとう。 -Fを追加して修正。 –

+0

まだ安全な方法ではありません。それは部分文字列と一致します。 file2.txtに 'a'という単語が含まれていると、 'a'という文字を含むfile1.txtのすべての行が投げられます。 – rettops

1

ファイルが巨大(ソートされていなければならない)の場合、commは、行ごとに動作するので、Ivanが提案したより一般的なgrepソリューションよりも好ましい可能性があります。したがって、file2.txt (または各行のためにそれを検索する)。

comm -3 file1-sorted.txt file2-sorted.txt | sed 's/^\t//' 

sedコマンドはcommによって挿入された主要なタブを削除するために必要とされます。