順序を維持し、大文字と小文字を無視しながら重複行を削除する方法は?

順序を維持し、大文字と小文字を無視しながら重複行を削除する方法は?
[user@notebook ~]$ printf '1\n5\n3\n3\n4\n2\nA\nB\na\n'
1
5
3
3
4
2
A
B
a
[user@notebook ~]$ 
[user@notebook ~]$ printf '1\n5\n3\n3\n4\n2\nA\nB\na\n' | awk '!seen[$0]++'
1
5
3
4
2
A
B
a
[user@notebook ~]$ 
[user@notebook ~]$ printf '1\n5\n3\n3\n4\n2\nA\nB\na\n' | awk 'BEGIN{IGNORECASE=1} !seen[$0]++'
1
5
3
4
2
A
B
a
[user@notebook ~]$ 

尋ねる:このイベントをどのように無視できますか?したがって、「A」または「a」のみが残ります。

ベストアンサー1

printf '1\n5\n3\n3\n4\n2\nA\nB\na\n' | awk '!seen[tolower($0)]++'

あなたが探している出力を生成します。

awkマニュアルページから:

IGNORECASEは、すべての正規表現および文字列操作の大文字と小文字の区別を制御します。 [...]注:配列添字は影響を受けません。

そのため、使用してもIGNORECASE効果はありません。

おすすめ記事