순서를 유지하고 대소문자를 무시하면서 중복 행을 제거하는 방법은 무엇입니까?

순서를 유지하고 대소문자를 무시하면서 중복 행을 제거하는 방법은 무엇입니까?
[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아무런 효과가 없습니다.

관련 정보