awk что это такое примеры использования

AWK – язык скриптов облегчающий жизнь системного администратора.
Если Вы пытались расшифровать аббревиатуру AWK на основе английских слов или команд часто встречающихся в UNIX, то этот путь изначально неверен. AWK расшифровывается как буквы из имен и фамилий трех разработчиков данного скриптового языка.
AWK работает с входным потоком. В работе системного администратора этот вывод то, что мы видим в командной оболочки unix (bash).
Просто пример: набираем команду ps ax и видим список запущенных процессов нашего сервера , что -то наподобие:
1490 ? Ss 0:16 /sbin/syslogd
1497 ? Ss 0:00 /usr/sbin/sshd
1581 ? S 0:00 /bin/sh /usr/bin/mysqld_safe
17616 ? S 0:04 /usr/sbin/apache2 -k start
17622 ? S 0:05 /usr/sbin/apache2 -k start
17623 ? S 0:04 /usr/sbin/apache2 -k start

В листинге выше показано что на сервере в данный момент запущен Апач, запущена база данных MySQL , собственно сама командная оболочка шелл sshd и syslogd (системный журнал).
На Вашем сервере всё будет несколько по-другому , но без принципиальных отличий. С этой информацией может работать awk.
Очень часто awk требуется администратору чтобы парсить (вырвать) определенную информацию. В литинге процессов , приведенном выше, первая цифра в строке – это номер процесса. Попробуем используя awk получить номера всех процессов сервера Apache:

ps ax | awk ' match($0, /.*apache2.*/) {print $1}'

Что здесь к чему? Ps ax – сама команда . Далее, за прямой чертой, следует инструкция для awk заключенная в одинарные кавычки match($0, /.*apache2.*/) – регулярное выражение , в нашем случае просто ищет строки в который встречается:
любые символыapache2любые символы
Финальный аккорд {print $1} – фильтрует что вывести на печать. Первую часть каждой строки до пробела , в которой встретился apache2. В нашем примере – это цифры обозначающие номер запущенного процесса:
17616
17622
17623

Опубликовано 02.10.2015 в 19:28 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: Debian, FreeBSD, Системное администрирование · Теги: , , ,