Ten jednowarstwowy usuwa zduplikowane linie z wprowadzania tekstu bez wstępnego sortowania.
Na przykład:
$ cat >f
q
w
e
w
r
$ awk '!a[$0]++' <f
q
w
e
r
$
Oryginalny kod znaleziony w Internecie brzmiał:
awk '!_[$0]++'
Było to dla mnie jeszcze bardziej kłopotliwe, ponieważ wziąłem _
specjalne znaczenie w awk, podobnie jak w Perlu, ale okazało się, że to tylko nazwa tablicy.
Teraz rozumiem logikę stojącą za linią jednokreskową: każda linia wejściowa jest używana jako klucz w tablicy mieszającej, dlatego po zakończeniu skrót zawiera unikalne wiersze w kolejności nadejścia.
Chciałbym się dowiedzieć, jak dokładnie interpretacja tego zapisu jest interpretowana przez awk. Np. Co oznacza znak huku ( !
) i inne elementy tego fragmentu kodu.
Jak to działa?