Цей однолінійний файл видаляє повторювані рядки з введення тексту без попереднього сортування.
Наприклад:
$ cat >f
q
w
e
w
r
$ awk '!a[$0]++' <f
q
w
e
r
$
Оригінальний код, який я знайшов у мережах, читав:
awk '!_[$0]++'
Це ще більше мене здивувало, коли я сприйняв _
особливе значення в awk, як в Perl, але виявилося це лише назвою масиву.
Тепер я розумію логіку, що лежить в основі одного вкладиша: кожен рядок введення використовується як ключ у хеш-масиві, таким чином, по завершенні хеш містить унікальні рядки в порядку прибуття.
Я хотів би дізнатися, як саме ця позначення трактується awk. Наприклад, що !
означає знак чуб ( ) та інші елементи цього фрагмента коду.
Як це працює?