Esse alinhamento remove linhas duplicadas da entrada de texto sem pré-classificação.
Por exemplo:
$ cat >f
q
w
e
w
r
$ awk '!a[$0]++' <f
q
w
e
r
$
O código original que encontrei nas internets dizia:
awk '!_[$0]++'
Isso foi ainda mais desconcertante para mim, pois eu _
tive um significado especial no awk, como no Perl, mas acabou sendo apenas o nome de uma matriz.
Agora, eu entendo a lógica por trás da linha única: cada linha de entrada é usada como chave em uma matriz de hash; assim, após a conclusão, o hash contém linhas únicas na ordem de chegada.
O que eu gostaria de aprender é como exatamente essa notação é interpretada pelo awk. Por exemplo, o que significa o sinal de estrondo ( !
) e os outros elementos desse trecho de código.
Como funciona?