$ awk options program file
где,
* options - это опции, передаваемые awk * program - скрипт, который будет обрабатывать файл * file - файл, который необходимо разобрать.
Например,
Команды можно разделять ";"
cat /etc/passwd | awk -F ':' '{print $1; print $3}'
BEGIN & END - блоки начала и конца файла. Ниже подсчёт количества строк в файле
cat /etc/passwd | awk 'BEGIN {a = 0} {a=a+1} END {print a}'
Блоки BEGIN{} и END{} выполнились только один раз. А вот блок {} выполнился несколько раз - по количеству строк в файле
cat /etc/passwd | awk -F ':' 'BEGIN {a = 0} {a=a+$3} END {print a}'
Мы разбиваем каждую строку /etc/passwd по символу ':', объявляем переменную a равную 0, в каждой строке вытаскиваем uid ($3) и прибавляем к переменной a. И в завершение выводим переменную a на экран.
|$0|вся строка| |$1|первая колонка| |$2|вторая колонка| |$n|nная колонка|
FIELDWIDTHS | разделитель полей по количеству символов, например FIELDWIDTHS="3 4 3", 1235.96521 будет 123 5.96 521. Используется, когда нет явных разделителей. |
RS | Разделитьель строк |
FS | Specifies the field separator. |
OFS | Разделитель вывода |
ORS | Разделитель вывода |
Команда | Описание | |
---|---|---|
cat /etc/passwd | awk -F ':' '{print $1}' | читаем построчно файл /etc/passwd, разделяем по символу ':' и выводим только первый элемент - то есть имя пользователя. |
awk {print $1} access.log|sort|iniq-c | Печатаем первое поле из лога, сортируем и оставляем уникальные | |
for i in 'awk '{print $1}' access.log|sort -u'; do echo $i;done | ||
for i in 'awk '{print $1}' access.log|sort -u'; do whois $i| grep "country:";done |