awk.md 2.1 KB

awk

Універсальна мова програмування для роботи з файлами. Більше інформації: https://github.com/onetrueawk/awk.

  • Вивести п’ятий стовпець (він же поле) у файлі, розділеному пробілами:

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 "Точний збіг foo"; else if ($1 ~ "bar") print "Частковий збіг bar"; else print "Baz"}' {{шлях/до/файлу}}

  • Вивести всі рядки, значення 10-го стовпця яких знаходиться між min і max:

awk '($10 >= {{min_value}} && $10 <= {{max_value}})'

  • Вивести таблицю користувачів із 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