2016-05-12 36 views
-1

私はawk '!a[$0]++' fileを使用して複製された行を元の順序で残して削除することを理解していますが、このようなコマンドはファイル全体に対して機能しますが、指定した行に対してこれを実行します。例えば指定した行の重複した行を削除するにはどうすればいいですか?

、私はいくつかの行リストファイルLINE持っている:私は別のファイルFILELINESにリストされている重複行を削除したい

line1 
line2 
line3 

を。例えば、FILEは、そのような行がありますline4LINESていないので

line1 
line2 
line3 
line4 
line4 
line4 
line1 
line1 
line2 
line3 

削除した後に、最初の6行が残っているので、重複が洗浄されないのです。

ありがとうございました!

答えて

2

あなたはあなたの親切な対応のための

awk 'FNR==NR{lines[$0]++; next} lines[$0]++ < 2' lines file 

$ awk 'FNR==NR{lines[$0]++; next} lines[$0]++ < 2' lines file 
line1 
line2 
line3 
line4 
line4 
+0

おかげのようなものを書くことができます!コマンドはほとんど動作します:)上の例から、 'LINES'にない行については、2度しか印刷しません。 –

+0

私は一種の素朴な方法で修正しました: 'awk 'FNR == NR {lines [$ 0] ++; $ 0}}($ 0)$ {print $ 0} '行ファイル' {$ 0} $ {print $ 0} –

関連する問題