awk で入力順を保ちつつ重複を外す2021年06月21日 13時36分50秒

ちょっとした用で、入力順を保ちつつ重複を外すがあった。sort -u は順番を入れ換えてしまう。uniq は連続した重複のみを外すので、今回の入力には使えなかった。

ハッシュテーブル内に存在するかを確認する a in b を利用。それを否定する ! を使う。このときに括弧が必要。! a in bだと、a が否定されてしまう。

% awk '!($0 in l){print}{l[$0]=$0}'
a
a
b
b
a
b
c
c
なお、入力値は
a
b
a
b
c