- Скенирајте датотеке, ред по ред.
- Поделите сваку линију на поља / колоне.
- Наведите обрасце и упоредите линије датотеке са тим обрасцима
- Извршите разне радње на линијама које се подударају са датим узорком
У овом чланку ћемо објаснити основну употребу наредбе авк и како се она може користити за раздвајање датотеке низова. Извели смо примере из овог чланка на систему Дебиан 10 Бустер, али они се лако могу копирати на већини Линук дистрибуција.
Пример датотеке коју ћемо користити
Пример датотеке низова који ћемо користити да бисмо демонстрирали употребу наредбе авк је следећи:
На то указује свака колона датотеке узорка:
- Прва колона садржи име запослених / наставника у школи
- Друга колона садржи предмет који запослени предаје
- Трећа колона означава да ли је запослени професор или доцент
- Четврта колона садржи плату запосленог
Пример 1: Користите Авк за штампање свих редова датотеке
Штампање сваког реда одређене датотеке је подразумевано понашање наредбе авк. У следећој синтакси наредбе авк не специфицирамо ниједан образац који би авк требао исписати, па би наредба требала примијенити акцију „испис“ на све редове датотеке.
Синтакса:
$ авк 'принт' назив датотеке.тктПример:
У овом примеру кажем наредби авк да штампа садржај моје датотеке узорка, ред по ред.
$ авк 'принт' сампле_филе.ткт
Пример 2: Употријебите авк за испис само линија које одговарају датом узорку
Уз авк можете одредити образац и наредба ће исписати само линије које одговарају том узорку.
Синтакса:
$ авк '/ паттерн_то_бе_матцхед / принт' назив датотеке.тктПример:
Из датотеке узорка, ако желим да одштампам само редове који садрже променљиву „Б“, могу да користим следећу наредбу:
$ авк '/ Б / принт' сампле_филе.ткт
Да пример буде смисленији, дозволите ми да одштампам само податке о запосленима који су „професорски“.
$ авк '/ профессор / принт' сампле_филе.ткт
Команда штампа само редове / уносе који садрже низ „професор“, тако да имамо драгоценије информације изведене из података.
Пример 3. Употријебите авк да подијелите датотеку тако да се исписују само одређена поља / колоне
Уместо да исписујете целу датотеку, можете да направите авк да одштампате само одређене колоне датотеке. Авк подразумевано третира све речи одвојене размаком у реду као запис колоне. Складишти запис у променљиву од $ Н. Тамо где $ 1 представља прву реч, $ 2 чува другу реч, $ 3 четврту и тако даље. $ 0 чува целу линију тако да се штампа шта је ред, како је објашњено у примеру 1.
Синтакса:
$ авк 'принт $ Н,… .' назив документа.тктПример:
Следећа команда ће исписати само прву колону (име) и другу колону (предмет) моје датотеке узорка:
$ авк 'принт $ 1, $ 2' сампле_филе.ткт
Пример 4: Користите Авк за бројање и испис броја редова у којима се подудара образац
Можете рећи авк-у да преброји број линија у којима се подудара одређени образац, а затим да изнесе тај 'цоунт'.
Синтакса:
$ авк '/ паттерн_то_бе_матцхед / ++ цнт ЕНД принт "Цоунт =", цнт'назив документа.ткт
Пример:
У овом примеру желим да избројим број особа које предају предмет „енглески“. Стога ћу рећи команди авк да се подудара са узорком „енглески“ и исписати број линија у којима се овај образац подудара.
$ авк '/ енглески / ++ цнт ЕНД принт "Цоунт =", цнт' сампле_филе.ткт
Бројање овде сугерише да 2 особе предају енглески језик из узорака евиденције датотека.
Пример 5: Употријебите авк за испис само редова са више од одређеног броја знакова
За овај задатак користићемо уграђену функцију авк која се назива „дужина“. Ова функција враћа дужину улазног низа. Стога, ако желимо да авк штампа само редове са бројем знакова већим или чак мањим од броја, можемо користити функцију дужине на следећи начин:
За штампање линија са знаковима већим од броја:
$ авк 'ленгтх ($ 0)> н' име датотеке.тктЗа штампање линија са знаковима мањим од броја:
$ авк 'дужина ($ 0) < n' filename.txtГде је н број знакова које желите да одредите за линију.
Пример:
Следећа наредба ће исписати само редове из моје датотеке узорка који имају знакове веће од 30:
$ авк 'ленгтх ($ 0)> 30' сампле_филе.ткт
Пример 6: Употријебите авк за спремање резултата наредбе у другу датотеку
Коришћењем оператора преусмеравања '>', можете користити команду авк да бисте исписали његов излаз у другу датотеку. Ово је начин на који га можете користити:
$ авк 'цритериа_то_принт "назив датотеке.ткт> оутпутфиле.тктПример:
У овом примеру, користићу оператер преусмеравања са својом командом авк за испис само имена запослених (колона 1) у нову датотеку:
$ авк 'принт $ 1' сампле_филе.ткт> имена_запослених.ткт
Преко мачјих команди сам проверио да нова датотека садржи само имена запослених.
Пример 7: Употријебите авк за испис само непразних линија из датотеке
Авк има неке уграђене наредбе помоћу којих можете филтрирати излаз. На пример, наредба НФ се користи за вођење броја поља унутар тренутног улазног записа. Овде ћемо користити НФ наредбу за испис само празних редова датотеке:
$ авк 'НФ> 0' сампле_филе.тктОчигледно је да можете користити следећу наредбу за испис празних редова:
$ авк 'НФ < 0' sample_file.txtПример 8: Употријебите авк за бројање укупних редова у датотеци
Друга уграђена функција која се зове НР води бројање броја улазних записа (обично линија) дате датотеке. Ову функцију у авк можете користити на следећи начин за бројање броја редова у датотеци:
$ авк 'ЕНД принт НР' сампле_филе.ткт
Ово су биле основне информације које су вам потребне да бисте започели раздвајањем датотека наредбом авк. Можете користити комбинацију ових примера за преузимање значајнијих информација из ваше датотеке низова кроз авк.