[awk] 重複した行を除いて出力する
作成日: 2026年09月14日
awk の連想配列を使用すると、入力順を保ったまま重複した行を除いて出力できます。
例えば、次の内容の fruits.txt を用意します。
apple
orange
apple
banana
orange
次のコマンドを実行します。
awk '!line_counts[$0]++' fruits.txt
実行結果は次のとおりです。
apple
orange
banana
line_counts は awk の予約語や組み込み変数ではなく、この例で任意に付けた連想配列の名前です。
line_counts[$0] には、各行の文字列をキーとして出現回数が保存されます。初めて現れた行では値が 0 のため !line_counts[$0]++ が真になり、その行が出力されます。2回目以降は偽になるため出力されません。