¿Cómo eliminar líneas duplicadas mientras se mantiene el order Y se ignora el caso?

[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 ~]$ 

P: ¿cómo puedo ignorar el caso? Entonces solo debería haber "A" o "a".

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

produce la salida que estás buscando.

Desde la página de manual de awk :

IGNORECASE Controla la sensibilidad de mayúsculas y minúsculas de todas las expresiones regulares y operaciones de cadena. […] NOTA: la subscripción de matrices no se ve afectada.

Es por eso que usar IGNORECASE no tiene ningún efecto.