2

sedまたはを使用して、一致するパターンを 2 回目の出現から削除しようとしていawkます。入力ファイルには、次の情報が含まれています。

abc
def
abc
ghi
jkl
abc
xyz
abc

abc2 番目のインスタンスからパターンを削除します。出力は次のようになります。

abc
def
ghi
jkl
xyz
4

4 に答える 4

1

から取得:unix.com

を使用awk '!x[$0]++'すると、重複する行が削除されます。x は配列であり、0 に初期化されます。x のインデックスは $0 です。$0 が最初に一致する場合、x[$0] の値に 1 を加えた値が x[$0] になり、現在は 1 です。ここで ++ は " suffix ++",0 が返され、追加されます。したがって、!x[$0] は true であり、デフォルトで $0 が出力されます。$0 が複数回出現する場合、! x[$0] は false になるため、$0 は出力されません。

于 2013-07-28T17:20:17.853 に答える