Важное замечание по экранированию символа `$` в Debian и подобных дистрибутивах:
В большинстве документации и примеров для `awk` можно встретить запись с экранированием символа `$` — например, `$1`, `$3` и т.д. Это нужно в некоторых оболочках или системах для предотвращения подстановки переменных оболочкой.Однако в Debian и большинстве современных Linux-дистрибутивов при использовании одинарных кавычек (`'...'`) экранировать `$` не требуется.
Таким образом, запись вида
awk -F: '\$3 >= 1000 { print \$1 }' /etc/passwd >
следует писать проще и корректнее как
awk -F: '$3 >= 1000 { print $1 }' /etc/passwd >
Это упрощает запись и улучшает читаемость команд.
Общий вид команды:
awk 'условие {действие}' файл
По умолчанию `awk` разбивает каждую строку на поля, разделённые пробелом или табуляцией.
Можно изменить разделитель полей с помощью опции `-F` или внутри программы, задав переменную `FS`.
Вывести первый столбец файла `/etc/passwd` (имена пользователей):
awk -F: '{ print $1 }' /etc/passwd
Здесь разделитель `-F:` — двоеточие, так как поля в `/etc/passwd` разделены двоеточиями.
Вывести строки, где третий столбец (UID) больше или равен 1000:
awk -F: '$3 >= 1000 { print $0 }' /etc/passwd
Можно опустить `{ print $0 }`, так как по умолчанию выводится вся строка:
awk -F: '$3 >= 1000' /etc/passwd
Посчитать сумму чисел во втором столбце файла `data.txt`:
awk '{ sum += $2 } END { print sum }' data.txt
Вывести строки, где значение второго поля больше 50, и показать только первое и второе поле:
awk '$2 > 50 { print $1, $2 }' data.txt
Вывести имя пользователя и UID из `/etc/passwd` с форматированием:
awk -F: '{ printf "User: %s, UID: %d\n", $1, $3 }' /etc/passwd
Вывести имена пользователей и их полные имена (GECOS) только для обычных пользователей с UID от 1000 до 65533:
awk -F: '$3 >= 1000 && $3 < 65534 { print $1, "-", $5 }' /etc/passwd
`awk` — универсальный инструмент для обработки текстовых данных. Он позволяет быстро фильтровать, преобразовывать и анализировать данные, используя простой, но мощный язык программирования. Освоение `awk` значительно расширит ваши возможности работы с текстовыми файлами в Linux.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()