Awk — это язык программирования, включенный в Linux и используемый для контекстного поиска и преобразования текста. В обычной жизни используется чтобы упростить жизнь ленивого умного системного администратора при поиске информации текстовом файле.
Вот простые примеры использования awk:
Пример ниже показывает, как команда awk проводит манипуляции со строкой, чтобы получить необходимые данные. Ниже показан обычный вывод команды ‘ls -l’. Он содержит 9 столбцов, разделенных пробелами.
viktor@viktor:~/test$ ls -l
итого 20
-rw-rw-r— 1 viktor viktor 2460 апр 3 02:22 domains
-rw-rw-r— 1 viktor viktor 2460 янв 23 22:32 ipaddress
-rw-rw-r— 1 viktor viktor 2460 фев 13 10:22 lists
-rw-rw-r— 1 viktor viktor 2460 мар 10 2016 servers
-rw-rw-r— 1 viktor viktor 2460 апр 24 13:08 test
Воспользуемся командой awk чтобы напечатать столбцы с 6 по 9:
awk ‘{print $6,$7,$8,$9}’
viktor@viktor:~/test$ ls -l | awk ‘{print $6,$7,$8,$9}’
апр 3 02:22 domains
янв 23 22:32 ipaddress
фев 13 10:22 lists
мар 10 2016 servers
апр 24 13:08 test
Отсортируем вывод по месяцам с помощью ключа -M:
viktor@viktor:~/test$ ls -l | awk ‘{print $6,$7,$8,$9}’ | sort -M
янв 23 22:32 ipaddress
фев 13 10:22 lists
мар 10 2016 servers
апр 24 13:08 test
апр 3 02:22 domains
Заменим пробелы на знак «тире»
viktor@viktor:~/test$ ls -l | awk ‘{print $6 «-» $7 «-» $8 «-» $9}’
—
апр-3-02:22-domains
янв-23-22:32-ipaddress
фев-13-10:22-lists
мар-10-2016-servers
апр-24-13:08-test
Пример поиска и удаления файлов с помощью команд awk и grep
ls -l | grep «2016» | awk ‘{print $9}’ | echo $(xargs)
viktor@viktor:~/test$ ls -l | grep «2016» | awk ‘{print $9}’ | echo $(xargs)
servers
ls -l | grep «2016» | awk ‘{print $9}’ | rm -f $(xargs)
Перед удалением файла используем команду echo чтобы проверить, какие файлы фильтруется с помощью команды grep, а rm -f будет выполнять удаление без запроса.
Будьте внимательны при тестировании не используйте реальные данные во избежании их потери!