2017-10-10 12 views
2

今、私はSorting and removing duplicate words in a lineというコマンドでいくつかの行をコマンドxargs -n1 | sort -u | xargsでパイプしています。複数の行をパイプするときに重複する単語を1行で取り除く方法

しかし、私の問題は、複数の行をパイプするときに、すべての行をまとめてしまうことです。どのように私はパイプができて:

My first example line for example 
My second example line for example 
My third example line for example 

とget:私はこの前のパイプの多くを実行している、それがループ内で実行されますので、あなたが知っていれば

My first example line for 
My second example line for 
My third example line for 

することは、私が好むだろう新しいループを作成せずにラインごとに読み込むことなく、簡単なソリューションを作成できます。一度に1行で作業したいので、ループに入れるだけです。検討していただきありがとうございます。

答えて

1
$ awk '{delete seen; c=0; for (i=1;i<=NF;i++) if (!seen[$i]++) printf "%s%s", (++c>1?OFS:""), $i; print ""}' file 
My first example line for 
My second example line for 
My third example line for 
0

少し単純awkプログラムが、秩序を維持せずに(どちらもあなたのパイプラインはありませんので、私はそれがあなたの条件ではないと仮定しています):

$ awk '{delete a; for(i=1;i<=NF;i++) a[$i]; for(w in a) printf w" ";print ""}' lines 
first line My for example 
line My for second example 
line My third for example 
関連する問題