Авк

Како се користи АВК на Линук-у

Како се користи АВК на Линук-у

Услужни програми које Линук нуди често следе УНИКС филозофију дизајна. Било који алат би требао бити мали, користити обичан текст за И / О и радити на модуларан начин. Захваљујући наслеђу, имамо неке од најбољих функција за обраду текста уз помоћ алата попут сед и авк.

У Линуку, авк алат долази унапред инсталиран на свим Линук дистрибуцијама. АВК је сам по себи програмски језик. АВК алат је само тумач програмског језика АВК. У овом водичу погледајте како се користи АВК на Линук-у.

АВК употреба

АВК алат је најкориснији када су текстови организовани у предвидљивом формату. Прилично је добро рашчланити и манипулисати табеларним подацима. Функционише редом по линији, на целој текстуалној датотеци.

Подразумевано понашање авк-а је коришћење белих простора (размаци, табови итд.) за одвајање поља. Срећом, многе конфигурационе датотеке на Линуку следе овај образац.

Основна синтакса

Овако изгледа командна структура авк-а.

$ авк '// ; ; '

Делови команде су сасвим разумљиви. Авк може да ради без дела претраживања или акције. Ако ништа није наведено, тада ће подразумевана радња на подударању бити само штампање. У основи, авк ће одштампати све подударности пронађене у датотеци.

Ако није наведен образац претраживања, тада ће авк извршити наведене радње у сваком поједином реду датотеке.

Ако су дата оба дела, тада ће авк користити образац да утврди да ли га тренутна линија одражава. Ако се подудара, авк извршава наведену радњу.

Имајте на уму да авк такође може радити на преусмереним текстовима. То се може постићи цевоводом садржаја наредбе на коју ће авк дјеловати. Сазнајте више о наредби за Линук пипе.

У демо сврхе, ево примера текстуалне датотеке. Садржи 10 редова, по 2 речи у реду.

$ мачка узорак.ткт

Регуларни израз

Једна од кључних карактеристика која чини авк моћним алатом је подршка регуларном изразу (скраћени израз, регуларни израз). Регуларни израз је низ који представља одређени образац знакова.

Ево листе неких од најчешћих синтакса регуларних израза. Ове синтаксе регуларних израза нису само јединствене за авк. То су готово универзалне синтаксе регуларних израза, па ће савладавање истих такође помоћи у другим апликацијама / програмирању које укључује регуларни израз.

  • Основни ликови: Сви алфанумерички знакови подвлаче (_) итд.
    • Скуп знакова: Да бисте олакшали ствари, у регуларном изразу постоје групе знакова. На пример, велика слова (А-З), мала (а-з) и нумеричке цифре (0-9).
  • Мета-ликови: То су ликови који објашњавају различите начине за проширивање обичних знакова.
    • Раздобље (.): Важи било које подударање знакова на позицији (осим новог реда).
    • Звездица (*): Нула или више постојања непосредног карактера који јој претходи су валидни.
    • Заграда ([]): Подударање је важеће ако се на позицији подудара било који од знакова из заграде. Може се комбиновати са скуповима знакова.
    • Царет (^): Меч ће морати да буде на почетку линије.
    • Долар ($): Меч ће морати да буде на крају линије.
    • Повратна црта (\): Ако било који мета-знак мора да се користи у дословном смислу.

Штампање текста

Да бисте одштампали сав садржај текстуалне датотеке, користите команду принт. У случају обрасца за претрагу, није дефинисан образац. Дакле, авк штампа све линије.

Узорак $ авк 'принт'.ткт

Овде је „принт“ АВК наредба која исписује садржај уноса.

Стринг сеарцх

АВК може извршити основну претрагу текста на датом тексту. У одељку са узорцима то мора бити текст који треба пронаћи.

У следећој наредби, авк ће тражити текст „брзо“ у свим редовима узорка датотеке.ткт.

Узорак $ авк '/ куицк /'.ткт

Сада, употребимо неке регуларне изразе за даље фино подешавање претраге. Следећа команда ће исписати све редове који на почетку имају „браон“ боју.

$ авк '/ ^ браон /' узорак.ткт

Како би било да нађемо нешто на крају реда? Следећа команда ће исписати све редове који на крају имају „брзо“.

$ авк '/ куицк $ /' узорак.ткт

Вилд паттерн паттерн

Следећи пример ће показати употребу карата (.). Овде могу бити било која два знака пре знака „е“.

$ авк '/… е /' узорак.ткт

Узорак џокер знака (помоћу звездице)

Шта ако на локацији може бити било који број знакова? Да бисте се подударали са било којим могућим ликом на позицији, користите звездицу (*). Овде ће се АВК подударати са свим линијама које имају било који број знакова иза „тхе“.

$ авк '/ узорак * /'.ткт

Израз заграде

Следећи пример ће показати како се користи израз заграда. Израз заграда говори да ће на локацији подударање бити важеће ако се подудара са скупом знакова затвореним заградама. На пример, следећа команда ће се подударати са „Тхе“ и „Тее“ као важеће подударања.

$ авк '/ Т [хе] е /' узорак.ткт

У регуларном изразу постоје неки предефинисани скупови знакова. На пример, скуп свих великих слова означен је као „А-З“. У следећој наредби авк ће се подударати са свим речима које садрже велико слово.

$ авк '/ [А-З] /' узорак.ткт

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

  • [0-9]: Означава једноцифрену цифру
  • [а-з]: Означава једно мало слово
  • [А-З]: Означава једно велико слово
  • [а-зА-з]: Означава једно слово
  • [а-зА-з 0-9]: Означава један знак или цифру.

Авк унапред дефинисане променљиве

АВК долази са гомилом унапред дефинисаних и аутоматских променљивих. Ове променљиве могу олакшати писање програма и скрипти са АВК.

Ево неколико најчешћих променљивих АВК на које ћете наићи.

  • НАЗИВ ДОКУМЕНТА: Име датотеке тренутне улазне датотеке.
  • РС: Сепаратор записа. Због природе АВК, обрађује податке један по један запис. Овде ова променљива одређује граничник који се користи за поделу тока података на записе. Подразумевано је ова вредност знак новог реда.
  • НР: Број тренутног улазног записа. Ако је вредност РС постављена на подразумевану, тада ће та вредност означавати тренутни број линије за унос.
  • ФС / ОФС: Знакови који се користе као сепаратор поља. Једном прочитан, АВК дели запис на различита поља. Граничник је дефинисан вредношћу ФС. Током штампања, АВК се поново придружује свим пољима. Међутим, у овом тренутку АВК користи ОФС сепаратор уместо ФС сепаратора. Генерално, и ФС и ОФС су исти, али нису обавезни да би то били.
  • НФ: Број поља у тренутном запису. Ако се користи подразумевана вредност „размак“, тада ће одговарати броју речи у тренутном запису.
  • ОРС: Сепаратор записа за излазне податке. Подразумевана вредност је знак новог реда.

Проверимо их на делу. Следећа наредба ће користити НР променљиву за испис реда 2 до реда 4 из узорка.ткт. АВК такође подржава логичке операторе као што су логички и (&&).

$ авк 'НР> 1 && НР < 5' sample.txt

Да бисте АВК променљивој доделили одређену вредност, користите следећу структуру.

$ авк '// ; ; ' =,

На пример, да бисте уклонили све празне редове из улазне датотеке, промените вредност РС у основи на ништа. То је трик који користи опскурно ПОСИКС правило. Одређује да ако је вредност РС празан низ, онда се записи раздвајају низом који се састоји од нове линије са једним или више празних редова. У ПОСИКС-у је празан ред без садржаја потпуно празан. Међутим, ако линија садржи размаке, онда се не сматра „празном“.

$ авк 'принт' РС = "узорак.ткт

Додатна средства

АВК је моћан алат са мноштвом функција. Иако овај водич покрива пуно њих, то су и даље само основе. Савладавање АВК-а потрајаће више од овог. Овај водич би требао бити леп увод у алат.

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

  • Исеците размак
  • Користећи условну изјаву
  • Одштампајте низ колона
  • Редовни израз са АВК
  • 20 примера АВК

Интернет је сасвим добро место за научити нешто. Постоји мноштво сјајних водича о основама АВК за врло напредне кориснике.

Завршна мисао

Надамо се да је овај водич помогао да се пружи добро разумевање основа АВК. Иако може потрајати, савладавање АВК-а је изузетно корисно у смислу снаге коју даје.

Срећно рачунање!

Како снимити и стримовати своју играћу сесију на Линук-у
У прошлости се играње игара сматрало само хобијем, али с временом је играчка индустрија забележила огроман раст у погледу технологије и броја играча. ...
Најбоље игре за ручно праћење
Оцулус Куест је недавно представио сјајну идеју ручног праћења без контролера. Са све већим бројем игара и активности које извршавају подршку формално...
Како приказати ОСД прекривач у целом екрану Линук апликација и игара
Играње игара преко целог екрана или коришћење апликација у режиму целог екрана без ометања може вам одсећи релевантне системске информације видљиве на...