Awk: Навчання сценарію оболонки за допомогою команди awk Terminal

Awk: Навчання сценарію оболонки за допомогою команди awk Terminal

Awk: Навчання сценарію оболонки за допомогою команди awk Terminal

Команда "awk" у вільних операційних системах типу GNU / Linux є дуже потужною командою, яка допомагає нам мати більший контроль при обробці даних з інших команд або командних команд. Назва AWK походить від ініціалів прізвищ його авторів: Альфред Aхо, петер Wайнбергер та Брайан Kерніган.

Ця команда забезпечує мову сценаріїв для обробки тексту, за допомогою якої ми можемо: Визначати змінні, використовувати рядки та арифметичні оператори, використовувати управління потоками та цикли, а також створювати відформатовані звіти. Насправді Awk - це більше, ніж просто команда обробки шаблонів, це ціла мова семантичного аналізу.

Вступ до команди "awk"

AWK була однією з перших дуже популярних консольних утиліт для управління (обробки / вилучення) даних шляхом максимізації функціональних можливостей конвеєрів UNIX. Мова, що надається цією утилітою, в даний час є стандартом майже у всіх сучасних операційних системах типу UNIX, настільки, що вона є частиною базових специфікацій UNIX, тому вона, як правило, вже встановлена ​​в більшості з них за замовчуванням.

Найпоширеніший його синтаксис: файли awk 'program' та де 'program' може бути: pattern {action} pattern {action}. Команда зчитує введені файли по одному рядку за раз. Кожен рядок порівнюється з кожним візерунком по порядку; Для кожного шаблону, що відповідає рядку, виконується відповідна дія.

Простий приклад, наприклад:

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

він запитує перше поле, якщо воно є коренем кожного рядка в / etc / passwd, і друкує його, враховуючи ":" з -F: як роздільник поля.

Вступний приклад Awk

Практичні приклади

Список найбільш часто використовуваних команд

Перегляньте список на основі історії Системного терміналу, упорядкованого від найбільш часто використовуваного до найменшого.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Приклад:

Приклад 1: Команда Awk

Графік (таблиця) із кількістю з'єднань для кожного хоста

Створіть графік на основі тексту ASCII, який відображає загальну кількість підключень від хосту до кожної IP-адреси.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

Приклад:

Приклад 2: Команда Awk

Список каталогів за розміром

Надрукуйте на екрані список каталогів поточного шляху від найбільшого до найменшого із зазначенням міток, що відповідають їх розміру, використовуючи літери: g, m та k.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

Приклад:

Приклад 3: Команда Awk

Показувати трафік з мережевого інтерфейсу

Перегляньте споживання вхідних та вихідних даних в Інтернеті в кілобайтах (кб) для вказаного мережевого інтерфейсу.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

Приклад:

Отримайте числовий ряд Фібоначчі

Створіть список X кількісних чисел, дотримуючись шаблону Фібоначчі, давши 2 базові числа, які потрібно побудувати.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

Приклад:

Приклад 5: Команда Awk

Графічний перелік структури файлів за розміром

Отримайте список усіх папок у корені операційної системи разом із графікою (стовпчиками) та числовим поданням у відсотках від їх розміру в ній.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Приклад:

Приклад 6: Команда Awk

Перелічіть зведення типів файлів у каталозі

Показати список типів файлів, що містяться в каталозі, разом із кількістю файлів, які йому відповідають.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

Приклад:

Приклад 8: Команда Awk

Ці приклади командних рядків із використанням команди awk, сподіваюся, вам знадобляться дуже корисними. І вони служать для використання безпосередньо з консолі або опосередковано, вставляючи їх у скрипт (автоматизоване завдання).

У наступному дописі про сценарії оболонки ми розглянемо інші команди.

Якщо ви хочете дізнатись трохи більше про команду "grep", відвідайте це посилання "DEBIAN Wiki”І якщо ви хочете дізнатись більше про сценарії Shell у нашому власному блозі, Ви можете поглянути на інші наші публікації на цю тему, натиснувши тут: Сценарії в FromLinux