UNIX端末から、diff file1 file2
を使用して2つのファイルの違いを見つけることができます。 2つのファイルの類似性を表示する同様のコマンドはありますか? (必要に応じて、多くのパイプを使用できます。
各ファイルには、文字列文を含む行が含まれています。それらはソートされ、重複する行はsort file1 | uniq
で削除されます。
file1
: http://Pastebin.com/taRcegVn
file2
: http://Pastebin.com/2fXeMrHQ
そして、出力は両方のファイルに現れる行を出力するはずです。
output
: http://Pastebin.com/FnjXFshs
私はpythonを使用してそれを行うことができますが、ターミナルに入れるには少し多すぎると思います:
x = set([i.strip() for i in open('wn-rb.dic')])
y = set([i.strip() for i in open('wn-s.dic')])
z = x.intersection(y)
outfile = open('reverse-diff.out')
for i in z:
print>>outfile, i
@tjamesonが述べたように、それは別のスレッドで解決されるかもしれません。別のソリューションを投稿したいだけです:sort file1 file2 | awk 'dup[$0]++ == 1'
awkの基本を理解するには、 awkガイド を参照してください。行のパターン値がtrueの場合、この行が印刷されます
dup [$ 0]はハッシュテーブルであり、各キーは入力の各行であり、元の値は0であり、この行が発生するとインクリメントします。再び発生すると、値は1になるはずなので、dup[$0]++ == 1
はtrueです。次に、この行が印刷されます。
これは、質問で指定されているように、どちらのファイルにも重複がない場合にのみ機能することに注意してください。
AWKを使用せずに繰り返し行のリストを取得する場合は、 -d
フラグを使用してuniq を実行できます。
sort file1 file2 | uniq -d