AWK в примерах
awk
tolower
Преобразование регистра
Преобразование строк результата к нижнему регистру и пропуск 1-ой строки (обычно заголовок).
Получаем список доменов с nic.ru и преобразуем его в удобный для работы
wget 'https://www.nic.ru/downloads/domains.gz?login=14331/NIC-REG/adm&password=MySecretPass' -O domains.gz
gzip -d domains.gz
awk ' NR >= 2 { print tolower($1) }' domains > .domains
к верхнему регистру
USER="Developer garry"; echo $USER | awk '{ print tolower($1), toupper($2)}'
# ответ
developer GARRY
Отбор по номеру строки
Посмотреть только активные порты TCP4, отсортированные и без лишнего
NR (NumberRow) задает строки, которые надо обрабатывать.
Вывести строку с определенным номером
Выбрать строку с номером 17:
Включить вывод 1-ой строки
Чтобы не съедалась первая строка при обработке файла, который начинается с разделителя (первый символ является разделителем), надо после FS прописать команду “$0 = $0”
Grep в качестве предфильтра
Можно до обработки awk сразу “отсечь” по типу grep нужную строку (строки)
Сумма по колонке
Просуммировать 4-ый столбец (размер дисков в Гб)
openstack volume list --all-projects --long -f value | grep "Simple EBS" | awk '{s += $4} END {print s}'
Применяется конструкция вида: ‘{sum += $4} end {print sum}’
Максимальное значение
Задача - найти максимальное значение по колонке.
idx() - это имя функции awk, можно выбрать другое имя переменной, например index.
idx=3 - выборка по 3-ому полю
NR==2 - начинать подсчет со 2-ой строки (если есть заголовок)
Функция split (s,M,c)
Фильтрация IP-адресов из файла s - строка, M - массив, c - разделитель
Фильтр IP-адресов
Код, фильтрующий строки содержащие только ip адрес, скрипт сортирует ip адреса и удаляет дубли
Смена прав
Пример, как изменить права только на каталоги в текущей директории:
Обработка списка пакетов
Вывод двух основных колонок списка пакетов linux, полученных командой ‘dpkg -l’:
cat store-soft.txt | awk '{FS=" "; print $2,"|",$5" "$6" "$7" "$9" "$10" "$11" "$12}' > store-soft2.txt
Здесь разделителем полей исходного файла является пробел (конкатенация параметров поля Description c 5-го по 12-е).
Выходной разделитель: “|”
Фильтрация выводимых полей
Вывод полной информации о пользователях системы с идентификаторами uid больше 1000:
То-же самое, но выводим только имена пользователей а алфавитном порядке: Вывод списка пользователей системы, у которых UID находится в диапазоне от 2 до 500: