18

UNIXターミナルから、diff file1 file22つのファイルの違いを見つけるために使用できます。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
4

2 に答える 2

35

AWKに頼らずに繰り返し行のリストを取得したい場合は、-dflagを使用してuniqを実行できます。

sort file1 file2 | uniq -d
于 2014-03-03T20:27:07.800 に答える
17

@tjamesonが述べたように、それは別のスレッドで解決される可能性があります。別の解決策を投稿したいだけです: sort file1 file2 | awk 'dup[$0]++ == 1'

  1. awkの基本については、 awkガイドを参照してください。行のパターン値がtrueの場合、この行が印刷されます。

  2. dup [$ 0]は、各キーが入力の各行であるハッシュテーブルであり、元の値は0であり、この行が発生すると増分し、再度発生すると値は1になるはずなので、dup[$0]++ == 1trueです。次に、この行が印刷されます。

これは、質問で指定されたように、どちらのファイルにも重複がない場合にのみ機能することに注意してください。

于 2013-03-18T05:34:26.323 に答える