TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #508 12.5K
Tagd Tagd порадовал нас еще одним постом. Спасибо друг! В редакцию тебя что-ли на ставку забрать, складно пишешь 🥳. Пиши еще!

Как я офигел и полюбил AWK.

AWK - сильно недооценен. Мало кто его использует кроме как - вывести вторую колонку.

А между тем - это полноценный язык программирования.

Я решил выучить AWK, когда на хабре увидел конструкцию:

awk '!a[$0]++' ./file


Эта конструкция убирает дубли строк файла, оставляя только уникальные.

Причем делает это за один проход чтения файла!

Работает она очень просто:

Считывается строка файла ($0), Если a[$0] не (!) равен 0, то строка выводится в stdout.

После этого, a[$0] инкрементируется. Если далее встретится такое же значение строки $0, то a[$0] уже будет ненулевым и строка проигнорируется.

У этой конструкции есть и подводные камни. Весь файл фактически считывается в массив и хранится в памяти. Так что если файл больше половины свободной памяти - используйте uniq.

И теперь несколько примеров без объяснений:

awk '++a[$0]==3'


Уникальные строки, c числом вхождений >=3.

awk '++a[$0]>=3'


Все вхождения, начиная с третьего.

Эти конструкции могут быть полезны, когда хочется выявить особо настырных.

Ну, и еще. AWK поддерживает вещественные числа. Поэтому когда нужно что-то посчитать:

awk 'BEGIN{print 1/3}' 


или

echo 1 3|awk '{print $1/$2}'


Не так красиво, как bc. Но bc/dc может и не быть в системе, а awk, есть, практически везде.

В общем, если припрёт awk'ом можно заменить cat, sed, grep, tr, cut, head, tail, wc...

Ну, и ложка дегтя. Есть несколько версий awk: MAWK NAWK GAWK

Базовый функционал у них одинаковый. Так что не заморачивайтесь. Если кто-то заинтересовался - help по GAWK.

👉 Вопросы, комментарии приветствуются.

tags: #linux
—
🔔 @bashdays
More from @bashdays
  1. Sep 24, 2026Post #1565
  2. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  3. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  4. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  5. Sep 11, 2026🤖 DevOps в эпоху AI трансформации: что работает уже сейчас! 17 сентября Сбер собирает Dev…
  6. Sep 9, 2026Всем привет, с вами TagdTagd! Я тут вынужденно перешёл на MAX. Просто Telegram перестал ра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →