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

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

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

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, надявам се да ви бъдат много полезни. И те служат за използване директно от конзолата или индиректно чрез вмъкването им в скрипт (автоматизирана задача).

В следващия пост на Shell Scripting ще разгледаме други команди.

Ако искате да научите малко повече за командата "grep", посетете тази връзка "DEBIAN Wiki”И ако искате да научите повече за Shell Scripting в нашия собствен блог, можете да разгледате и другите ни публикации по темата, като кликнете тук: Скриптове в FromLinux