Esta línea única elimina las líneas duplicadas de la entrada de texto sin ordenarlas previamente.
Por ejemplo:
$ cat >f
q
w
e
w
r
$ awk '!a[$0]++' <f
q
w
e
r
$
El código original que he encontrado en Internet dice:
awk '!_[$0]++'
Esto fue aún más desconcertante para mí, ya que asumí _
que tenía un significado especial en awk, como en Perl, pero resultó ser solo el nombre de una matriz.
Ahora, entiendo la lógica detrás de una línea: cada línea de entrada se usa como una clave en una matriz de hash, por lo tanto, al finalizar, el hash contiene líneas únicas en el orden de llegada.
Lo que me gustaría aprender es cómo awk interpreta exactamente esta notación. Por ejemplo, qué significa el signo de explosión ( !
) y los otros elementos de este fragmento de código.
¿Como funciona?