Авк: Учење скрипти љуске помоћу команде авк терминала

Авк: Учење скрипти љуске помоћу команде авк терминала

Авк: Учење скрипти љуске помоћу команде авк терминала

Команда „авк“ у бесплатним оперативним системима типа ГНУ / Линук је врло моћна команда која нам помаже да имамо већу контролу приликом обраде података из других команди или команди. Име АВК потиче од иницијала презимена његових аутора: Алфред Aхо, Петер Wеинбергер и Бриан Kернигхан.

Ова наредба пружа скриптни језик за обраду текста помоћу којег можемо: Дефинисати променљиве, користити низове и аритметичке операторе, користити контролу протока и циклусе и генерисати форматиране извештаје. Заправо, Авк је више од пуке наредбе за обраду узорака, то је читав језик семантичке анализе.

Увод у наредбу „авк“

АВК је био један од првих веома популарних услужних програма конзоле за управљање (руковање / издвајање) података максимизирањем функционалности УНИКС цевовода. Језик који пружа овај услужни програм тренутно је стандард у готово свим модерним оперативним системима сличним УНИКС-у, толико да је део основних УНИКС спецификација, па је обично већином инсталиран у већини њих.

Његова најчешћа синтакса је: авк 'програм' датотеке и где 'програм' може бити: паттерн {ацтион} паттерн {ацтион}. Команда чита унос датотеке један по један ред. Сваки ред се упоређује са сваким узорком редом; За сваки образац који одговара реду извршава се одговарајућа радња.

Једноставан пример попут:

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

тражи прво поље ако је корен сваке линије у / етц / пассвд и исписује га узимајући у обзир ":" са -Ф: као сепаратор поља.

Уводни пример Авк

Практични примери

Листа команди која се најчешће користи

Погледајте листу засновану на историји системског терминала поредане од најчешће коришћених до најмањих.

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

Пример:

Пример 1: Команда Авк

Графикон (табела) са бројем веза за сваки домаћин

Направите АСЦИИ графички заснован на тексту који приказује укупан број веза од хоста до сваке ИП адресе.

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: Команда Авк

Списак директорија по величини

Одштампајте на екрану листу директоријума тренутне путање од највећег до најмањег, приказујући ознаке које одговарају њиховој величини, користећи слова: г, м и к.

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: Команда Авк

Прикажите саобраћај са мрежног интерфејса

Прегледајте потрошњу улазних и излазних података на мрежи у килобајтима (кб) за наведени мрежни интерфејс.

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

Пример:

Добити фибоначијеву серију бројева

Направите листу Кс бројева количина пратећи фибоначијев образац са датим 2 основна броја која треба конструисати.

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

Пример:

Пример 5: Команда Авк

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

Набавите Списак свих директоријума у ​​корену оперативног система, заједно са графиком (траке) и нумеричким приказом као проценат њихове величине у њему.

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: Команда Авк

Наведите резиме типова датотека у директоријуму

Прикажите листу типова датотека садржаних у директоријуму, заједно са бројем датотека које му одговарају.

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

Пример:

Пример 8: Команда Авк

Ови примери командних линија помоћу команде авк надам се да ће вам бити врло корисни. А они служе за употребу директно са конзоле или индиректно уметањем у скрипту (аутоматизовани задатак).

У следећем посту о Схелл Сцриптинг истражићемо друге команде.

Ако желите да сазнате мало више о наредби „греп“, посетите овај линк “ДЕБИАН Вики”А ако желите да сазнате више о Схелл скриптирању на нашем властитом блогу, можете погледати наше остале публикације на ту тему, кликом овде: Скриптирање DesdeLinux


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   Тукито дијо

    Схватио сам само први пример, ништа друго 🙁