Skip to main content

Гавк - Линук Цомманд - Уник наредба

Anonim

Име

гавк - језик скенирања узорака и обраде

Синопсис

гавк Опције ПОСИКС или ГНУ стилова програм-датотека -- филе …гавк ПОСИКС или ГНУ стиле оптионс -- програмски текст филе …

пгавк Опције ПОСИКС или ГНУ стилова програм-датотека -- филе …пгавк ПОСИКС или ГНУ стиле оптионс -- програмски текст филе …

Опис

Гавк је имплементација ГНУ пројекта АВК програмског језика. У складу је са дефиницијом језика у ПОСИКС 1003.2 командном језику и услужним стандардима. Ова верзија, заузврат, заснива се на опису у АВК програмски језик , Ахо, Кернигхан и Веинбергер, са додатним карактеристикама пронађеним у верзији система В издање 4 УНИКС-а авк . Гавк такође пружа и најновије Белл Лабораториес авк екстензије и велики број ГНУ специфичних екстензија.

Пгавк је профилна верзија гавк . То је идентично на сваки начин гавк , осим што се програми покрећу спорије и аутоматски производи профил за извршење у датотеци авкпроф.оут по завршетку. Видите --профил опција, испод.

Командна линија се састоји од опција за гавк сам, програм АВК програма (ако се не испоручује преко или --филе опције) и вриједности које ће бити доступне у АРГЦ и АРГВ унапред дефинисане АВК варијабле.

Формат опције

Гавк опције могу бити или традиционалне ПОСИКС опције једног слова или дугачке опције ГНУ-а. Опције ПОСИКС почињу са једним `` - '', док дугачке опције почињу са `` - ''. Дугачке опције су дате за ГНУ-специфичне функције и за ПОСИКС-оване функције.

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

Опције

Гавк прихвата следеће опције, наведене у абецедном реду.

фс

- поља-сепаратор фс Користите фс за улазни сепаратор поља (вриједност ФС унапред дефинисана варијабла).

вар = вал

--ассигн вар = вал Додели вредност вал на варијаблу вар , пре почетка програма. Такве варијабилне вредности су доступне за ПОЧЕТИ блок АВК програма.

програм-датотека

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

-мф ННН

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

-В цомпат

- Традиционално

- компатибилно

- традиционално Трчите компатибилност мод. У режиму компатибилности, гавк понаша се идентично са УНИКС-ом авк ; ниједан од ГНУ-специфичних екстензија није препознат. Употреба - традиционално је пожељно у односу на друге облике ове опције. Видиш ГНУ ЕКСТЕНСИОНС, испод, за више информација.

-В цопилефт

-В цопиригхт

--цопилефт

--Ауторско право Штампајте кратку верзију ГНУ поруке о ауторским правима на стандардном излазу и изађите успешно.

-В думп-варијабле= филе

--думп-варијабле= филе Штампајте сортирану листу глобалних варијабли, њихове врсте и крајње вриједности филе . Ако не филе је обезбеђен, гавк користи датотеку названу авкварс.оут у тренутном директоријуму.

Имати листу свих глобалних варијабли је добар начин за тражење типографских грешака у вашим програмима. Такође бисте користили ову опцију ако имате велики програм са пуно функција и желите бити сигурни да ваше функције не ненамерно користе глобалне варијабле које сте мислили да буду локални. (Ово је нарочито лака грешка коју треба направити са једноставним променљивим именима као што су и, ј, и тако даље.)

- Помозите

-В употреба

--помоћ

--употреба Штампајте релативно кратак преглед доступних опција на стандардном излазу. (По ГНУ кодирање стандарда , ове опције узрокују непосредан и успешан излаз.)

-В линт= фатално

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

-Слијепо стари

- старији Обезбедите упозорења о конструктима који нису преносиви на изворну верзију Уник-а авк .

-В ген-по

- ген-по Скенирајте и разврстајте АВК програм и генеришите ГНУ .по формат датотеке на стандардном излазу са ставкама за све локализоване низове у програму. Сам програм се не извршава. Погледајте ГНУ геттект дистрибуција за више информација о .по фајлови.

-В не-децимални подаци

- не-децимални подаци Препознаје окталне и хексадецималне вредности у улазним подацима. Користите ову опцију уз пуно опреза!

-В посик

--посик Ово се укључује компатибилност мод, са следећим додатним ограничењима:

*

Икс есцапе секвенце нису препознате.

*

Само простор и таб делују као сепаратори поља када ФС постављена је на један простор, нова линија не.

*

Не можете наставити даље са линијама ? и :.

*

Синоним фунц за кључну реч функција није препознат.

*

Оператори ** и **= не могу се користити уместо ^ и ^=.

*

Тхе ффлусх () функција није доступна.

-В профил= проф_филе

--профил= проф_филе Пошаљите профилисане податке у проф_филе . Подразумевано је авкпроф.оут. Када трчите гавк , профил је само "лепа штампана" верзија програма. Када трчите пгавк , профил садржи број извршења сваке изјаве у програму на левој маргини и бројеве позива функција за сваку кориснички дефинисану функцију.

- Поново интервал

--ре-интервал Омогућите употребу интервални изрази у усклађивању регуларног израза (види Регуларни изрази, доле). Изрази интервала нису традиционално доступни на језику АВК-а. ПОСИКС стандард их је додао авк и егреп конзистентни једни са другима. Међутим, њихова употреба ће највероватније прекинути стари АВК програм, тако да гавк само их пружа ако су затражене са овом опцијом, или када --посик је прецизиран.

-В извор програмски текст

--извор програмски текст Користите програмски текст као изворни код АВК програма. Ова опција омогућава лако премештање функција библиотеке (користи се помоћу и --филе опције) са изворним кодом унетим у командну линију. Намењен је првенствено за средње и велике АВК програме који се користе у схелл скриптама.

-В верзија

- верзија Информације о штампању за ову копију гавк на стандардном излазу. Ово је корисно углавном за сазнање да ли је тренутна копија гавк на вашем систему је ажуран у односу на оно што дистрибуира фонд за Фрее Софтваре. Ово је такође корисно приликом пријављивања грешака. (По ГНУ кодирање стандарда , ове опције узрокују непосредан и успешан излаз.)

-- Сигнал крај опција. Ово је корисно да дозволите даље аргументе за сам програм АВК да започне са `` - ''. Ово је углавном за доследност са концептом раздвајања аргумента који користи већина других ПОСИКС програма.

У режиму компатибилности, све друге опције су означене као неважеће, али се на други начин игноришу. У нормалном раду, све док се програмски текст испоручује, непознате опције се преносе на АВК програм у програму АРГВ низ за обраду. Ово је посебно корисно за покретање АВК програма помоћу механизма "#!" Извршног преводиоца.

ИЗВОЂЕЊЕ АВК ПРОГРАМА

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

образац { акционих изјава }функција име ( листа параметара ) { изјаве }

Гавк прво чита програмски извор из програм-датотека (и) ако је специфицирано, од аргумената до --извор, или из првог не-опција аргумента на командној линији. Тхе и --извор опције се могу користити више пута на командној линији. Гавк чита програмски текст као све програм-датотека и изворни текстови командне линије били су повезани заједно. Ово је корисно за изградњу библиотека функција АВК, без потребе да их укључите у сваки нови АВК програм који их користи. Такође пружа могућност мешања функција библиотеке са програмима командне линије.

Варијабла околине АВКПАТХ одређује путању претраживања која се користи приликом проналажења изворних датотека именом са опција. Ако ова варијабла не постоји, подразумевана је путања".: / уср / лоцал / схаре / авк". (Стварни директоријум може варирати, овисно о томе како гавк је направљен и инсталиран.) Ако је име датотеке дату на опција садржи знак `` / '', не врши се претрага путање.

Гавк извршава АВК програме у следећем редоследу. Прво, сви варијабилни задаци наведени преко опција се изводи. Следећи, гавк саставља програм у интерну форму. Онда, гавк извршава код у ПОЧЕТИ блокове (ако их има), а затим наставља читање сваке датотеке назване у АРГВ низ. Ако у командној линији нису пронађени фајлови, гавк чита стандардни унос.

Ако име фајла у командној линији има облик вар = вал третира се као варијабилни задатак. Променљива вар биће додељена вредност вал . (Ово се дешава после било ког другог ПОЧЕТИ блокови (и) су покренути.) Додељивање варијабли командне линије је најкорисније за динамичко додјељивање вриједности варијаблама које АВК користи за контролу начина на који је инпут разбијен у поља и записе. Такође је корисно за контролу стања ако је потребно више прелаза преко једне датотеке података.

Ако вредност одређеног елемента од АРГВ Празно (''), гавк прескочи преко њега.

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

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

Варијабле, записи и поља

АВК променљиве су динамичне; они настају када се први пут користе. Њихове вриједности су бројеви или низови са плутајућим тачкама, или обоје, у зависности од тога како се користе. АВК такође има једнодимензионалне низове; Низови са вишеструким димензијама могу се симулирати. Неколико унапријед дефинисаних променљивих постављено је као програмски рад; ови ће бити описани као потребни и сажети у наставку.

Записи

Обично се записи раздвајају новим знаковима. Можете контролисати како се записи раздвајају додељивањем вриједности уграђеној варијабли РС. Ако РС је сваки појединачни карактер, тај лик раздваја записе. Иначе, РС је регуларни израз. Текст на улазу који одговара овом регуларном изразу раздваја запис. Међутим, у режиму компатибилности, користи се само први карактер његове стринг вредности за раздвајање записа. Ако РС је подешен на нулл стринг, а затим се подаци раздвајају празним линијама. Када РС постављен је на нулл стринг, знак нове линије увек делује као сепаратор поља, поред сваке вредности ФС могу имати.

Поља

Како се сваки улазни запис чита, гавк раздваја запис поља , користећи вредност ФС променљива као сепаратор поља. Ако ФС је појединачни знак, поља су одвојена том карактером. Ако ФС је нулл низ, онда сваки појединачни карактер постаје одвојено поље. Иначе, ФС Очекује се да буде пуно регуларно изражавање. У посебном случају то ФС је јединствени простор, поља су раздвојена простиркама и / или табовима и / или новим линијама. (Али види расправу о --посик, доле). БЕЛЕШКА: Вредност ИГНОРЕЦАСЕ (види доле) такође утиче на то како су поља подељена када ФС је регуларни израз и како се подаци раздвајају РС је регуларни израз.

Ако је ФИЕЛДВИДТХС варијабла је постављена на листу са бројевима одвојеним размаком, свако поље се очекује да има фиксну ширину, и гавк раздваја запис помоћу одређених ширина. Вредност ФС се занемарује. Додели нову вредност ФС преписује употребу ФИЕЛДВИДТХС, и враћа подразумевано понашање.

Свако поље у улазном запису може се позвати на његову позицију, $1, $2, и тако даље. $0 је цео запис. Поља не морају бити референтне константе:

н = 5принт $ н

штампа пето поље у улазном запису.

Променљива НФ је подешен на укупан број поља у улазном запису.

Позивање на непостојећа поља (тј. Поља након $ НФ) произведе нулл-стринг. Међутим, додељивање непостојећег поља (нпр. $ (НФ + 2) = 5) повећава вредност НФ, креира сва интервенцијска поља са нултим низом као њихову вриједност и узрокује вриједност $0 да би се поново израчунали, при чему су поља раздвојена вриједношћу ОФС. Позивање на негативна нумерисана поља узрокује фаталну грешку. Декретирање НФ доводи до губитка вредности поља изнад нове вриједности и вриједности $0 да би се поново израчунали, при чему су поља раздвојена вриједношћу ОФС.

Додјела вриједности постојећем пољу доводи до рестаурације читавог записа када $0 је референцирано. Слично томе, додељујући вредност $0 доводи до респлитације записа, креирајући нове вредности за поља.

Уграђене варијабле

Гавк уграђене варијабле су:

АРГЦ

Број аргумената командне линије (не укључује опције у гавк , или програмски извор).

АРГИНД

Индекс у АРГВ тренутне датотеке која се обрађује.

АРГВ

Арраи аргумената командне линије. Низ је индексиран од 0 до АРГЦ - 1. Динамично мења садржај АРГВ могу да контролишу датотеке које се користе за податке.

БИНМОДЕ

На системима без ПОСИКС-а, специфицира се употреба `` бинарног '' режима за све датотеке И / О. Нумеричке вредности од 1, 2 или 3 наводе да би улазне датотеке, излазне датотеке или све датотеке требале користити бинарни И / О. Стринг вредности од "р", или "в" прецизирајте да улазне датотеке или излазне датотеке треба да користе бинарни И / О. Стринг вредности од "рв" или "вр" наведите да би све датотеке требале користити бинарни И / О. Свака друга вредност стринга се третира као "рв", али генерише поруку упозорења.

ЦОНВФМТ

Формат конверзије за бројеве, "% .6г", подразумевано.

ЕНВИРОН

Низ који садржи вредности тренутног окружења. Низ је индексиран променљивим окружењем, сваки елемент је вриједност те варијабиле (нпр.,ЕНВИРОН "ХОМЕ" може бити / хоме / арнолд). Промена овог поља не утиче на околину коју виде програми гавк се креће путем преусмеравања или систем ()функција.

ЕРРНО

Ако дође до системске грешке или ради преусмеравања гетлине, током читања гетлине, или током а Близу(), онда ЕРРНО ће садржати низ који описује грешку. Вредност је предмет превода у не-енглеском језику.

ФИЕЛДВИДТХС

Листа одвојених поља у бијелом простору. Када је подешен, гавк анализира улаз у поља фиксне ширине, уместо да користи вредност ФС променљива као сепаратор поља.

НАЗИВ ДОКУМЕНТА

Назив тренутне улазне датотеке.Ако у командној линији нису наведене датотеке, вредност је НАЗИВ ДОКУМЕНТА је `` - ''. Међутим, НАЗИВ ДОКУМЕНТА је недефинисан унутар ПОЧЕТИ блок (осим ако га не подеси гетлине).

ФНР

Број улазног записа у тренутној улазној датотеки.

ФС

Поље за унос поља, подразумевани простор. Видиш Поља, горе.

ИГНОРЕЦАСЕ

Контролише осетљивост случаја свих регуларних израза и низова операција. Ако ИГНОРЕЦАСЕ има вредност која није нула, затим упоређивање низова и подударање узорака у правилима, дељење поља са ФС, запис се раздваја РС, са којима се подударају регуларни изрази ~и !~, и генсуб (), гсуб (), индек (), утакмица(), разделити(), и суб () уграђене функције све игноришу случај када раде регуларне изразе. БЕЛЕШКА: Ундерсписивање матрице је не погођени, нити је нека() функција.

Тако, ако ИГНОРЕЦАСЕ није једнак нули, / аБ / одговара свим низовима "аб", "аБ","Аб", и "АБ". Као и код свих АВК варијабли, почетна вредност ИГНОРЕЦАСЕ је нула, тако да су сви регуларни изрази и низови операције обично осјетљиви на величину слова. Под Уником, пуни ИСО 8859-1 Латин-1 скуп знакова се користи када игноришете случај.

ЛИНТ

Пружа динамичку контролу над - линт опција из програма АВК. Када је истина, гавк штампа упозорења за лент. Када је нетачно, то не значи. Када је додељена вредност стринга "фаталан", упозорења о ланцу постају фаталне грешке, управо као - линт = фатално. Свака друга вриједна вриједност само штампа упозорења.

НФ

Број поља у тренутном улазном запису.

НР

Укупан број досадашњих улазних података.

ОФМТ

Излазни формат за бројеве, "% .6г", подразумевано.

ОФС

Сепаратор излаза из поља, по подразумеваном простору.

ОРС

Излазни запис сепаратора, подразумевано нова линија.

ПРОЦИНФО

Елементи овог поља пружају приступ информацијама о покретном АВК програму. На неким системима могу бити елементи у низу, "гроуп1" кроз "група н ' за неке н , што је број допунских група које процес има. Користити ин оператер да тестира ове елементе. Следећи елементи су гарантовани да буду доступни:

ПРОЦИНФО "егид"

вредност гетегид (2) системски позив.

ПРОЦИНФО "еуид"

вредност гетеуид (2) системски позив.

ПРОЦИНФО "ФС"

"ФС" ако се поље раздваја ФС је на снази, или "ФИЕЛДВИДТХС" ако се поље раздваја ФИЕЛДВИДТХС је на снази.

ПРОЦИНФО "гид"

вредност гетгид (2) системски позив.

ПРОЦИНФО "пгрпид"

ИД групе процеса тренутног процеса.

ПРОЦИНФО "пид"

ИД процеса текућег процеса.

ПРОЦИНФО "ппид"

ИД родитељског процеса текућег процеса.

ПРОЦИНФО "уид"

вредност гетуид (2) системски позив.

РС

Сепаратор улазног записа, подразумевано нова линија.

РТ

Терминатор записа. Гавк сетови РТ на улазни текст који одговара карактеру или регуларном изразу наведеном од стране РС.

РСТАРТ

Индекс првог карактера упарен са утакмица(); 0 ако нема меча. (То значи да индикатори карактера почињу у једном.)

РЛЕНГТХ

Дужина жице је у складу са утакмица(); -1 ако нема меча.

СУБСЕП

Карактер се користи за одвајање вишеструких индекса у елементима поља, подразумевано ' 034'.

ТЕКСТДОМАИН

Текстуални домен АВК програма; користи се за проналажење локализованих превода за низова програма.

Арраи

Низови су индексирани изразом између квадратних заграда ( и ). Ако је израз изразни израз ( екпр , екпр …), онда је низа индекса низ који се састоји од конценатације (стринг) вриједности сваког израза, одвојеног вриједношћу СУБСЕП променљива. Овај објекат се користи за симулацију вишеструко димензионираних низова. На пример:

и = "А"; ј = "Б"; к = "Ц"к и, ј, к = "здраво, свет н"

додељује низ "Здраво, свет н" на елемент у низу Икс који је индексиран низом"А 034Б 034Ц". Сви низови у АВК-у су асоциативни, тј. Индексирани по вредностима стринга.

Специјални оператор ин могу се користити у ако или док изјава да видите да ли низ има индекс који се састоји од одређене вредности.

ако (вал у низу) штампани низ вал

Ако низ има више индекса, користите (и, ј) у низу.

Тхе ин конструкт се такође може користити у а за петљу да поновите све елементе низа.

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

Варијабилно писање и конверзија

Варијабле и поља могу бити бројеви (плутајуће тачке) или низови или обоје. Како се вриједност варијабле тумачи зависи од његовог контекста. Ако се користи у нумеричком изразу, биће третирана као број, ако се користи као низ који ће се третирати као низ.

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

Када се стринг мора претворити у број, конверзија се постиже коришћењем стртод (3). Број се претвара у низ помоћу вриједности ЦОНВФМТ као формат стринг за спринтф (3), са нумеричком вриједношћу варијабле као аргументом. Међутим, иако су сви бројеви у АВК-у плутајуће тачке, интегралне вриједности су увек конвертовани као цели бројеви. Тако, дата

ЦОНВФМТ = "% 2.2ф" а = 12 б = а ""

варијабла б има вредност стринга '12' и не '12.00'.

Гавк врши упоређивање на следећи начин: Ако су две варијабле нумеричке, оне се нумерички упоређују. Ако је једна вриједност нумеричка, а друга има вриједност стринга која је "нумерички низ", онда се поредјења врше нумерички. У супротном, нумеричка вредност се претвара у низ и врши се упоређивање стрингова. Две струне се, наравно, упоређују као жице. Имајте на уму да ПОСИКС стандард примјењује концепт "нумеричког стринга" свугде, чак и константе стрингова. Међутим, ово је очито нетачно, и гавк ово не ради. (Срећом, ово је исправно у следећој верзији стандарда.)

Имајте на уму то константе стринга, као што су '57', су не нумерички низови, то су стринг константе. Идеја о "нумеричком низу" односи се само на поља, гетлине улазни, НАЗИВ ДОКУМЕНТА, АРГВ елементи, ЕНВИРОН елементе и елементе матрице креиране од стране разделити() то су нумерички низови. Основна идеја је то кориснички унос , а само кориснички унос, који изгледа нумерички, треба третирати на тај начин.

Унинитиализоване променљиве имају нумеричку вредност 0 и вредност стринга (нула, или празна, стринг).

Оксални и хексадецимални константе

Почевши од верзије 3.1 гавк, можете користити каталошке окталне и хексадецималне константе Ц-програма у изворном коду програма АВК. На пример, октална вредност 011 је једнако децималном 9, и хексадецималну вредност 0к11 је једнака децималним 17.

Стринг Цонстантс

Константе стринга у АВК су секвенце знакова затворених између двоструких навода ('). У оквиру низова, сигурно есцапе секуенцес су признати, као у Ц. То су:

\

Добра бацксласх.

а

Знак "упозорења"; обично АСЦИИ БЕЛ знак.

б

бацкспаце.

ф

облик хране.

н

Нова линија.

р

превоз Повратак.

т

хоризонтал таб.

в

вертикални табулатор.

Икс хекс цифре

Карактер представљен низом хексадецималних цифара који следи Икс. Као иу АНСИЦ-у, све следеце хексадецималне цифре сматрају се једним редом избегавања. (Ова карактеристика би требало да нам каже нешто о дизајну језика од стране одбора.) На примјер, " к1Б" је знак АСЦИИЕСЦ (бекство).

ддд

Карактер представљају 1-, 2- или 3-цифрени секвенцу окталних цифара. На пример., ' 033' је АСЦИИ ЕСЦ (есцапе) знак.

ц

Буквални карактер ц .

Есцапе секвенце се такође могу користити у сталним регуларним изразима (нпр.,/ т ф н р в одговара празним карактерима).

У режиму компатибилности, карактери представљени окталним и хексадецималним есцапе секвенцама се третирају буквално када се користе у константама регуларног израза. Тако, / а 52б / је еквивалентно са/ а * б /.

Паттернс анд Ацтионс

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

{принт}

који штампа цео запис.

Коментари почињу знаком `` # '' и настављају се до краја линије. Празне линије се могу користити за одвајање изјава. Обично се изјава завршава са новом линијом, међутим, то није случај за линије које се завршавају у ",", " {, ?, :, &&, или ||. Крај се завршава урадити или друго такође се њихове изјаве аутоматски настављају на следећој линији. У другим случајевима, линија се може наставити тако што ће се завршити са ', у ком случају ће нова линија бити игнорирана.

Вишеструке изјаве могу се ставити на једну линију тако што их раздвајају са ``; '' '. Ово се односи и на изјаве унутар акционог дела парице узорка-акција (уобичајени случај), као и на изјаве о акцијама узорка.

Паттернс

АВК обрасци могу бити један од следећих:

ПОЧЕТИ КРАЈ / регуларни израз / релациони израз образац && образац образац || образац образац ? образац : образац ( образац ) ! образац паттерн1 , паттерн2

ПОЧЕТИ и КРАЈ су две посебне врсте образаца који нису тестирани на улазу. Акциони делови свих ПОЧЕТИ обрасци се спајају као да су све изјаве написане у једној јединици ПОЧЕТИ блокирати. Они се извршавају пре чита читавог уноса. Слично, све КРАЈ блокови се спајају и извршавају када се исцрпи сви уноси (или када излаз изјава се извршава). ПОЧЕТИ и КРАЈ обрасци се не могу комбиновати са другим обрасцима у изразима у облику. ПОЧЕТИ и КРАЈ обрасци не могу недостајати дјелова дјеловања.

За / регуларни израз / обрасци, придружена изјава се извршава за сваки улазни запис који одговара редовном изразу. Редовни изрази су исти као они у егреп (1), а резимирани су у даљем тексту.

А релациони израз могу користити било који од оператора дефинисаних доле у ​​одељку о акцијама. Ове генерално тестирају да ли одређена поља одговарају одређеним регуларним изразима.

Тхе &&, ||, и ! оператери су логични И, логички ОР и логички НОТ, респективно, као у Ц. Они врше процену кратког споја, такође као у Ц, и користе се за комбиновање израза примитивнијег образца. Као иу већини језика, заграде се могу користити за промену редоследа евалуације.

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

Тхе паттерн1 , паттерн2 облик израза се назива а шаблон распона . Она се поклапа са свим улазним подацима почевши од записа који се поклапа паттерн1 , и наставља све до записа који се поклапа паттерн2 , инцлусиве. Не комбинира се са неком другом врстом израза.

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

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

ц

одговара не-метакарактеру ц .

ц

одговара буквалном карактеру ц .

.

одговара сваком карактеру укључујући Нова линија.

^

одговара почетку стринга.

$

одговара крају стринга.

абц …

листа знакова, одговара било којем од знакова абц … .

^ абц …

негирана листа карактера, одговара свим карактерима осим абц … .

р1 | р2

алтернативно: подударање р1 или р2 .

р1р2

цонцатенатион: матцхес р1 , и онда р2 .

р +

одговара један или више р 'с.

р *

одговара нули или више р 'с.

р ?

одговара нули или једној р 'с.

( р )

груписање: утакмице р .

р { н }

р { н ,}

р { н , м } Један или два броја унутар обујмица означава интервални израз . Ако постоји један број у грудима, претходни редовни израз р понавља се н пута. Ако су два броја одвојена зарезом, р понавља се н до м пута. Ако постоји један број, а затим запета р барем се понавља н пута.

Интервални изрази су доступни само ако је било --посик или --ре-интервал је наведен на командној линији.

и

одговара празном низу на почетку или на крају речи.

Б

одговара празном низу унутар речи.

<

одговара празном низу на почетку речи.

>

одговара празном низу на крају речи.

в

подудара се са било којим речима-конститутивним знаком (словом, цифром или подчртано).

В

одговара било ком карактеру који није саставни део ријечи.

`

одговара празном низу на почетку бафера (стринг).

'

одговара празном низу на крају бафера.

Есцапе секуенцес који важе у стринг констанцама (погледајте доле) такође важе у регуларним изразима.

Класе карактера су нове функције представљене у ПОСИКС стандарду. Класа знакова је посебна ознака за описивање листа карактера који имају одређени атрибут, али тамо где се стварни карактери могу разликовати од земље до земље и / или од карактера постављеног на скуп знакова. На примјер, појам о томе шта је алфабетски карактер разликује се у САД-у и Француској.

Класа карактера важи само у регуларном изразу у заграде листе знакова. Класе карактера се састоје од :, кључна реч која означава класу, и :. Класе знакова дефинисане ПОСИКС стандардом су:

: алнум:

Алфанумерички карактери.

: алпха:

Абецедни знакови.

: празно:

Простор или таблице.

: цнтрл:

Контролни знакови.

:цифра:

Нумерички знакови.

: граф:

Знакови који се могу штампати и видљиви. (Простор се може штампати, али није видљив, док је а Је оба.)

: ниже:

Абецедни знаци нижих слова.

: принт:

Штампани знаци (знакови који нису контролни знакови.)

: пунцт:

Знаци интерпункције (знакови који нису слово, цифре, контролни знакови или знакови свемира).

: спаце:

Просторни знаци (као што су простор, табулатор и форма, да наведете неколико).

: горњи:

Абецедни знакови великих слова.

: кдигит:

Ликови који су хексадецимални цифри.

На пример, прије ПОСИКС стандарда, да бисте одговарали алфанумеричким знаковима, морали бисте да пишете / А-За-з0-9 /. Ако је у вашем скупу карактера било других алфабетских знакова, то се не би подударало са њима, а ако се ваш скуп карактера разликује од АСЦИИ-а, то можда чак и не одговара алфанумеричким знацима АСЦИИ-а. Са ПОСИКС класама знакова можете писати/ : алнум: /, а ово се поклапа са абецедним и нумеричким знаковима у вашем скупу знакова.

Две додатне специјалне секвенце могу се појавити у листама знакова. Ови се односе на скупове знакова који нису АСЦИИ, који могу имати појединачне симболе (назване елементи сакупљања ) који су представљени са више од једног карактера, као и неколико знакова који су еквивалентни сакупљање , или сортирање, сврхе. (На пример, на француском, обичан "е" и гроб нагласак су еквивалентни.)

Цоллатинг Симболс

Симбол за упоређивање је вишеслојни елемент за сакупљање . и .. На пример, ако цх онда је елемент сређивања .цх. је регуларни израз који се подудара с овим елементом за сакупљање док је цх је регуларни израз који се такође поклапа ц или х.

Класе еквиваленције

Класа еквиваленције је име специфично за језик, за списак знакова који су еквивалентни. Име је затворено = и =. На пример, име е може се користити да представља све "е", "е", "" и "е". "У овом случају, = е = је регуларни израз који одговара било којој од е, е ', или е`.

Ове карактеристике су веома корисне у не-енглеским говорним местима. Библиотека то функционише гавк користи за усклађивање регуларног израза тренутно препознају само класе ПОСИКС знакова; они не препознају симболе сакупљања или класе еквиваленције.

Тхе и, Б, <, >, в, В, `, и ' оператери су специфични за гавк ; они су екстензије засноване на објектима у ГНУ регуларним експресионим библиотекама.

Разне опције командне линије контролишу како гавк интерпретира знакове у регуларним изразима.

Нема опција

У подразумеваном случају, гавк пружају све могућности ПОСИКС регуларних израза и ГПНУ оператера регуларног израза који су горе описани. Међутим, изрази интервала нису подржани.

--посик

Подржани су само ПОСИКС регуларни изрази, ГНУ оператери