如何删除重复行,同时保持顺序并忽略大小写?

如何删除重复行,同时保持顺序并忽略大小写?
[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没有效果。

相关内容