Программы
10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 9 — поиск с awk

10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 9 — поиск с awk

Сегодня речь пойдёт про базовые возможности awk. Даже самое минимальное знание этого языка может нехило упростить вашу жизнь в Unix-based системах.

Это девятая заметка из цикла перевода статьи «Learn 10 good UNIX usage habits» от IBM. По сути, это небольшой "финт ушами" в вашу копилку знаний о работе в терминале.

Сегодня речь пойдёт про базовые возможности awk. Даже самое минимальное знание этого языка может нехило упростить вашу жизнь в Unix-based системах.

AWK — скриптовый язык разбора и обработки входного потока.

9. Ищите во входном потоке нужные поля, а не строки.

Утилиты подобные awk имеет смысл использовать вместо grep в случае, когда вам нужно найти во входном потоке какое-то конкретное поле в строке вывода, а не просто где-нибудь в выводе.

Следующий простой пример иллюстрирует попытку найти файл, изменённый в декабре силами grep:

$ ls -l /tmp/a/b/c | grep Dec
-rw-r--r--  7 joe joe  12043 Jan 27 20:36 December_Report.pdf
-rw-r--r--  1 root root  238 Dec 03 08:19 README
-rw-r--r--  3 joe joe   5096 Dec 14 14:26 archive.tar

В этом примере мы фильтруем вывод команды ls по наличию в строке подстроки "Dec". Однако. помимо файлов, изменённых в декабре, мы успешно получаем и December_Report.pdf, который изменён в январе... Само собой это из-за названия файла. Всё понятно. Но разве это вы хотели получить?

Если же вы всё же решили получить только файлы, изменённые в декабре, стоит таки воспользоваться awk. В awk вы можете указать, какие конкретно поля (столбцы) входного потока вас интересуют:

$ ls -l | awk '$6 == "Dec"'
-rw-r--r--  3 joe joe   5096 Dec 14 14:26 archive.tar
-rw-r--r--  1 root root  238 Dec 03 08:19 README

В данном случае мы просим сравнить 6-ую колонку на предмет совпадения со строкой "Dec". И в итоге получаем именно то, чего мы хотели.

Так что не такая уж и плохая идея подучить какой-нибудь простой скриптовый язык. В будущем это, возможно, упростит вам жизнь.

Также может быть вам интересно:

Как в MacOS запустить диспетчер задач или есть ли аналог Ctrl+Alt+Delete

Читать »

Кто такие программисты? Нет, ну правда!

Кто же такие программисты, чем они занимаются, почему у программистов такие высокие ЗП?

Читать »
Фото Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Исследователи сумели пройти code-review с реквестами в ядро Linux, заведомо содержащими добавление уязвимостей.

Фото Пример своей консольной команды в Django проекте

Пример своей консольной команды в Django проекте

Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.

Фото Как на Bash посчитать число строк в проекте (директории)

Как на Bash посчитать число строк в проекте (директории)

Ниже будет представлен однострочник, решающий данную задачу на Bash + пошаговое описание его работы.

Фото И снова sudo, и снова "решето"

И снова sudo, и снова "решето"

В утилите sudo была исправлена очередная уязвимость.

Фото Как установить часовой пояс в Linux

Как установить часовой пояс в Linux

В рамках первичной настройки Операционной Системы важно установить и по какому времени вы живёте, ведь при следующем обновлении времени через Интернет ваше время слетит.

Фото Как найти самые большие папки и файлы в Linux

Как найти самые большие папки и файлы в Linux

Когда кончается место на жестком диске, возникает закономерный вопрос: на что же оно было потрачено, какие файлы разрослись больше положенного?

Фото Команда grep – полезные ключи и примеры использования

Команда grep – полезные ключи и примеры использования

У команды "grep" довольно много различных особенностей. особенно, если учесть, что с английского это "решето" – а что может войти в решето , не факт что выйдет!

Фото Как создать неизменяемый файл в Linux / MacOS / FreeBSD

Как создать неизменяемый файл в Linux / MacOS / FreeBSD

Само собой, root может всё (если введёт пару команд), однако, это вполне легальный способ запретить изменение файла.