38 lines
2.3 KiB
Markdown
38 lines
2.3 KiB
Markdown
|
|
# gawk
|
|||
|
|
|
|||
|
|
> Версия awk от GNU, универсальный язык программирования для работы с файлами.
|
|||
|
|
> Смотрите также: `awk`.
|
|||
|
|
> Больше информации: <https://www.gnu.org/software/gawk/manual/gawk.html>.
|
|||
|
|
|
|||
|
|
- Вывести пятый столбец (или поле) в файле, разделённом пробелами:
|
|||
|
|
|
|||
|
|
`gawk '{print $5}' {{путь/к/файлу}}`
|
|||
|
|
|
|||
|
|
- Вывести второй столбец строк, содержащих "foo", в файле, разделённом пробелами:
|
|||
|
|
|
|||
|
|
`gawk '/{{foo}}/ {print $2}' {{путь/к/файлу}}`
|
|||
|
|
|
|||
|
|
- Вывести последний столбец каждой строки в файле, используя запятую (вместо пробела) в качестве разделителя полей:
|
|||
|
|
|
|||
|
|
`gawk {{[-F|--field-separator]}} ',' '{print $NF}' {{путь/к/файлу}}`
|
|||
|
|
|
|||
|
|
- Просуммировать значения в первом столбце файла и вывести итог:
|
|||
|
|
|
|||
|
|
`gawk '{s+=$1} END {print s}' {{путь/к/файлу}}`
|
|||
|
|
|
|||
|
|
- Вывести каждую третью строку, начиная с первой:
|
|||
|
|
|
|||
|
|
`gawk 'NR%3==1' {{путь/к/файлу}}`
|
|||
|
|
|
|||
|
|
- Вывести различные значения в зависимости от условий:
|
|||
|
|
|
|||
|
|
`gawk '{if ($1 == "foo") print "Exact match foo"; else if ($1 ~ "bar") print "Partial match bar"; else print "Baz"}' {{путь/к/файлу}}`
|
|||
|
|
|
|||
|
|
- Вывести все строки, в которых значение 10-го столбца находится между минимальным и максимальным значениями:
|
|||
|
|
|
|||
|
|
`gawk '($10 >= {{минимальное_значение}} && $10 <= {{максимальное_значение}})' {{путь/к/файлу}}`
|
|||
|
|
|
|||
|
|
- Вывести таблицу пользователей (UID >=1000) с заголовком и форматированием, разделитель - двоеточие (`%-20s`: 20 символов с выравниванием по левому краю, `%6s`: 6 символов с выравниванием по правому краю):
|
|||
|
|
|
|||
|
|
`gawk 'BEGIN {FS=":";printf "%-20s %6s %25s\n", "Name", "UID", "Shell"} $4 >= 1000 {printf "%-20s %6d %25s\n", $1, $4, $7}' /etc/passwd`
|