[awk] 重複した行を除いて出力する

作成日: 2026年09月14日

awk の連想配列を使用すると、入力順を保ったまま重複した行を除いて出力できます。

例えば、次の内容の fruits.txt を用意します。

apple
orange
apple
banana
orange

次のコマンドを実行します。

awk '!line_counts[$0]++' fruits.txt

実行結果は次のとおりです。

apple
orange
banana

line_countsawk の予約語や組み込み変数ではなく、この例で任意に付けた連想配列の名前です。

line_counts[$0] には、各行の文字列をキーとして出現回数が保存されます。初めて現れた行では値が 0 のため !line_counts[$0]++ が真になり、その行が出力されます。2回目以降は偽になるため出力されません。

awk Shell command