diff --git a/pages.ru/common/awk.md b/pages.ru/common/awk.md new file mode 100644 index 0000000000..b289cb07d3 --- /dev/null +++ b/pages.ru/common/awk.md @@ -0,0 +1,38 @@ +# awk + +> Универсальный язык программирования для работы с файлами. +> Примечание: различные реализации AWK часто делают эту команду символической ссылкой на свой бинарный файл. +> Смотрите также: `gawk`. +> Больше информации: . + +- Вывести пятый столбец (или поле) в файле, разделённом пробелами: + +`awk '{print $5}' {{путь/к/файлу}}` + +- Вывести второй столбец строк, содержащих "foo", в файле, разделённом пробелами: + +`awk '/{{foo}}/ {print $2}' {{путь/к/файлу}}` + +- Вывести последний столбец каждой строки в файле, используя запятую (вместо пробела) в качестве разделителя полей: + +`awk -F ',' '{print $NF}' {{путь/к/файлу}}` + +- Просуммировать значения в первом столбце файла и вывести итог: + +`awk '{s+=$1} END {print s}' {{путь/к/файлу}}` + +- Вывести каждую третью строку, начиная с первой: + +`awk 'NR%3==1' {{путь/к/файлу}}` + +- Вывести различные значения в зависимости от условий: + +`awk '{if ($1 == "foo") print "Exact match foo"; else if ($1 ~ "bar") print "Partial match bar"; else print "Baz"}' {{путь/к/файлу}}` + +- Вывести все строки, в которых значение 10-го столбца находится между минимальным и максимальным значениями: + +`awk '($10 >= {{минимальное_значение}} && $10 <= {{максимальное_значение}})' {{путь/к/файлу}}` + +- Вывести таблицу пользователей (UID >=1000) с заголовком и форматированием, разделитель - двоеточие (`%-20s`: 20 символов с выравниванием по левому краю, `%6s`: 6 символов с выравниванием по правому краю): + +`awk 'BEGIN {FS=":";printf "%-20s %6s %25s\n", "Name", "UID", "Shell"} $4 >= 1000 {printf "%-20s %6d %25s\n", $1, $4, $7}' /etc/passwd`