Cette ligne supprime les lignes en double de la saisie de texte sans tri préalable.
Par exemple:
$ cat >f
q
w
e
w
r
$ awk '!a[$0]++' <f
q
w
e
r
$
Le code original que j'ai trouvé sur les internets se lit comme suit:
awk '!_[$0]++'
Cela me rendait encore plus perplexe alors que je prenais _
une signification particulière dans awk, comme dans Perl, mais il s’est avéré qu’il ne s’agissait que du nom d’un tableau.
Maintenant, je comprends la logique qui se cache derrière une ligne: chaque ligne d’entrée est utilisée comme clé dans un tableau de hachage. Ainsi, une fois terminée, la table de hachage contient des lignes uniques dans l’ordre d’arrivée.
Ce que j'aimerais apprendre, c'est à quel point cette notation est interprétée par awk. Par exemple, ce que signifie le signe bang ( !
) et les autres éléments de cet extrait de code.
Comment ça marche?