Перейти на домашнюю страницу

awk, Примеры использования

Примеры из лекции "Sed и awk — Виктор Ашик"
https://www.youtube.com/watch?v=81r8sD6yDJo

Использование awk в качестве grep.
Ищем шаблон (^user) и выполняем для него команду вывода строки {print}

# awk '/^user/{print}' /etc/passwd


Использование awk в качестве head.
Выполняем команду {print} и применяем шаблон, проверяющий значение переменной NR (Number of Records). При достижении переменной значения 7 выполняем команду {exit}

# awk '{print}NR==7{exit}' /etc/passwd


Использование awk в качестве "wc -l".
Используем шаблон END, срабатывающий по окончанию обработки файла. Выполняем команду вывода переменной NR.

# awk 'END{print NR}' /etc/passwd


Пример обработки столбцов при помощи awk.
На основе вывода команды 'ls -l'.
Ищем совпадения с шаблоном (^l) и выполняем для этих строк сценарий вывода девятого столбца.

# ls -l /etc/ | awk '/^l/{print $9}'


Указание разделителя.
Выведем первый столбец ($1) из файла при условии, что разделитель столбцов - двоеточие (-F:)

# awk -F: '{print $1}' /etc/passwd


Текстовые переменные в сценарии.
Выводим строки в которых первый столбец равен "user" (при условии, что разделитель двоеточие).

# awk -F: '$1=="user"{print}' /etc/passwd


* * *

Собственные примеры

Использование awk в качестве cat.
Выполняем для команду вывода строк {print} для файла

# awk '{print}' /etc/passwd


Пример вывода определённой строки из файла.
При достижении переменной NR значения 15 - выводим строку.

# awk 'NR==15{print}' /etc/passwd


Пример замены подстроки
Меняет в "указанном.файле" с последующим сохранением в "новый.файл"
Данная команда корректно отрабатывает файлы свыше 4Кб и не портит их

# awk '{gsub("Оригинал", "Новый текст", $0); print}' /заменить/в/указанном.файле > /изменения/сохранить/как/новый.файл


Пример сложения всех чисел в файле
Файл:

# cat ~/awk-test

1

3

5

7


Команда:

# awk 'BEGIN{sum=0}{sum+=$1}END{print sum}' ~/awk-test

16

#linux

2017-08-18 23:41:00