Linux Command-gawk бағдарламасын үйреніңіз

Атауы

gawk - суретті сканерлеу және өңдеу тілі

Синопсис

gawk [POSIX немесе GNU стилінің нұсқалары] -f- бағдарлама-файл [ - ] файл ...
gawk [POSIX немесе GNU стилінің опциялары] [ - ] бағдарлама-мәтіндік файл ...

pgawk [POSIX немесе GNU стилінің параметрлері] -f- бағдарлама файлы [ - ] файл ...
pgawk [POSIX немесе GNU стилінің опциялары] [ - ] бағдарлама-мәтіндік файл ...

Сипаттама

Gawk - GNU жобасының AWK бағдарламалау тілін жүзеге асыру. Ол POSIX 1003.2 командалық тілдер мен командалық стандарттар тіліндегі анықтамаға сәйкес келеді. Бұл нұсқа өз кезегінде AWK бағдарламалау тілінің сипаттамасына, Aho, Kernighan және Weinberger жүйесіндегі сипаттамаға негізделген, ол System V Release 4 UNIX awk нұсқасында табылған қосымша мүмкіндіктермен бірге. Gawk сондай-ақ жақында Bell Laboratuar awk кеңейтімдерін және GNU-ға тән кеңейтімдерді ұсынады.

Pgawk - бұл гауктың профильді нұсқасы. Бағдарламалар баяу жұмыс істейтіндіктен және автоматты түрде awkprof.out файлында орындаушылық профильді шығаратын жағдайдан басқа, gawk-ге әртүрлі болады. Төменде --profile параметрін қараңыз.

Командалық жолдың өзі - өзіңізді қызықтыратын нұсқалардан, AWK бағдарламасының мәтінінен (егер -f- немесе -file- опциялары арқылы берілмесе ) және ARGC және ARGV-да алдын ала анықталған AWK айнымалы мәндерінде қол жетімді болатын мәндерден тұрады.

Опция пішімі

Gawk нұсқалары дәстүрлі POSIX бір әріп нұсқалары немесе GNU стилінің ұзақ нұсқалары болуы мүмкін. POSIX параметрлері `` `` `- '' жолымен басталады, ал ұзақ нұсқалар` `` `` арқылы басталады. Ұзақ нұсқалар GNU-ға тән ерекшеліктерге және POSIX-мандатқа ие мүмкіндіктерге арналған.

POSIX стандартына сүйене отырып, gawk-specific options -W параметріне дәлелдер арқылы жеткізіледі. Бірнеше- В нұсқалары қамтамасыз етілуі мүмкін. Әрбір -W нұсқасы төменде көрсетілгендей тиісті ұзақ нұсқаға ие. Ұзақ нұсқаларға қатысты дәлелдер немесе таңбалармен қосылады = белгісі, аралас емес бос орындар жоқ немесе олар келесі пәрмен жолы дәлелінде берілуі мүмкін. Ұзын нұсқалар қысқартылуы мүмкін, өйткені аббревиатура бірегей болып қалады.

Опциялар

Gawk келесі опцияларды қабылдайды, алфавит бойынша тізімделген.

-F fs

- өріс-бөлгіш fs Кіріс өріс бөлгішін fs пайдаланыңыз ( FS алдын ала анықталған айнымалы мән).

-v var = val

--assign var = val Бағдарламаның орындалуына дейін VAL айнымалы мәніне тағайындаңыз. Мұндай айнымалы мәндер AWK бағдарламасының BEGIN блогына қол жетімді.

-f- бағдарлама-файл

- Файл- бағдарлама файлы Бірінші командалық жол аргументінің орнына файл бағдарламасының файлынан AWK бағдарламасының көзін оқыңыз. Бірнеше -f (немесе --file ) опциялары пайдаланылуы мүмкін.

-mf NNN

-mr NNN NNN мәніне әртүрлі жад шектеулерін орнатыңыз. F жалаушаның ең көп санын анықтайды, ал r ту ең көп жазба өлшемін орнатады. Бұл екі жалау және -m опциясы Bell Laboratuar- ның UNIX awk-ның зерттеу нұсқасынан алынған. Олар гавка арқылы еленбейді, өйткені гауктағы алдын ала анықталған шектеулер жоқ.

-W үйлесімділігі

- Дәстүрлі

--Compat

- үйлесімділік режимінде дәстүрлі іске қосу. Үйлесімділік режимінде gawk UNIX awk-пен бірдей әрекет етеді; GNU-ге қатысты кеңейтімдердің ешқайсысы танылмады. Бұл опцияның басқа формалары бойынша - дәстүрлі болып табылады. Қосымша ақпарат алу үшін GNU EXTENSIONS бөлімін қараңыз.

- Көшірме көшірмесі

-W авторлық құқық

- көшірме

--Copyright GNU авторлық құқық туралы ақпараттың қысқаша нұсқасын стандартты шығарылымда басып шығарыңыз және сәтті шықтыңыз .

-W dump-айнымалылары [ = file ]

- айнымалы-айнымалы [ = file ] Сұрыпталған жаһандық айнымалылардың тізімін, олардың түрлері мен соңғы мәндерін файлға басып шығарыңыз. Егер файл жоқ болса, gawk ағымдағы каталогта awkvars.out деп аталатын файлды пайдаланады.

Барлық жаһандық айнымалылардың тізімін жасау сіздің бағдарламаларыңыздағы типографиялық қателерді іздеудің жақсы тәсілі болып табылады. Егер сізде көптеген функциялары бар үлкен бағдарлама болса, сіз бұл функцияны пайдаланасыз және сіздің функцияларыңыз жергілікті болуды көздейтін жаһандық айнымалыларды кездейсоқ пайдаланбайтынына сенімді болғыңыз келеді. (Бұл i , j , және т.с.с. қарапайым айнымалы атаулармен жасауға өте оңай қате.)

-W көмек

-W пайдалану

--Көмектесіңдер

--Қазіргі шығыс бойынша қол жетімді нұсқалардың салыстырмалы түрде қысқа түйіндемесін басып шығарыңыз. ( GNU кодтау стандарттары бойынша бұл опциялар дереу, табысты шығуды тудырады.)

-W lint [ = fatal ]

--lint [ = fatal ] Басқа SBK енгізулеріне күмәнді немесе тасымалданбайтын конструкциялар туралы ескертулерді қамтамасыз етіңіз. Өте қауіпті линт ескертулері факультативтік дәлелмен маңызды қателіктерге айналады. Бұл өте күрделі болуы мүмкін, бірақ оның қолданылуы таза AWK бағдарламаларының дамуын ынталандырады.

-Басқа

- lint-old Unix awk- нің бастапқы нұсқасына тасымалданбайтын конструкциялар туралы ескертулерді қамтамасыз етіңіз.

-W ген-по

--gen-po AWK бағдарламасын сканерлеу және талдау және стандартталған GNU .po пішіміндегі файлды бағдарламадағы барлық локализацияланатын жолдар үшін жазбалармен бірге жасау. Бағдарламаның өзі орындалмады. .po файлдары туралы қосымша ақпарат алу үшін GNU gettext таратуын қараңыз.

-В сан емес деректер

--Non-decimal-data Кіріс деректерінде сегіз және он алтылық мәндерді таниды. Бұл опцияны өте сақтықпен пайдаланыңыз!

-W posix

--posix Бұл келесі қосымша шектеулерге сәйкес үйлесімділік режимін іске қосады:

*

\ x құтылу тізбектері танылмайды.

*

FS тек бір орынға орнатылса, тек бос орын мен қойыншалар далалық бөлгіштер ретінде әрекет етеді, жаңа жол жоқ.

*

Кейінгі жолдарды жалғастыра алмайсыз ба? және :.

*

Кілт сөз функциясының синонимдік функциясы танылмайды.

*

** және ** = операторлары ^ және ^ = орнына қолданыла алмайды.

*

Fflush () функциясы қол жетімді емес.

-W профилі [ = prof_file ]

--profile [ = prof_file ] prof_file профильдік деректерді жіберіңіз . Әдепкі бойынша - awkprof.out . Гаукпен жұмыс жасағанда , профиль тек бағдарламаның «өте басып шығарылған» нұсқасы болып табылады. Pgawk көмегімен іске қосылғанда, профильде бағдарламаның әрбір үзіндісінің сол жақ шетінде орындалатын есептері бар және әрбір пайдаланушы анықтайтын функция үшін функцияны шақыру есептері бар.

-W қайта интервал

--re-interval Аралық өрнектерді қалыпты өрнекте сәйкестікте пайдалануды қосыңыз (төменде Regular Expressions бөлімін қараңыз). Аралық сөздер AWK тілінде әдеттегідей болмайды. POSIX стандарты оларды awk және egrep бір-бірімен үйлесімді ету үшін қосады. Дегенмен, оларды пайдалану ескірген AWK бағдарламаларын бұзуы ықтимал, сондықтан олар тек осы опциямен сұрау салынған жағдайда немесе pp-файлды көрсеткенде ғана қамтамасыз етеді.

-W бастапқы бағдарлама-мәтіні

- бағдарламаның мәтіні AWK бағдарламасының бастапқы коды ретінде бағдарлама-мәтінін пайдаланыңыз. Бұл опция командалық жолда енгізілген бастапқы кодпен кітапхана функцияларының ( f -f және --file опциялары арқылы) оңай араласуға мүмкіндік береді. Ол бірінші кезекте қабық сценарийлерінде қолданылатын орташа және үлкен AWK бағдарламаларына арналған.

-W нұсқасы

- Нұсқалардың стандартты шығысындағы арнайы гаук көшірмесі үшін нұсқалық ақпаратты басып шығарыңыз. Бұл, негізінен, сіздің жүйеңіздегі Gawk көшірмесінің Free Software Foundation таратып отырғанына қарамастан жаңартылғанын білу үшін пайдалы. Бұл қателер туралы хабарлау кезінде де пайдалы. ( GNU кодтау стандарттары бойынша бұл опциялар дереу, табысты шығуды тудырады.)

- опциялардың соңын сигнал. Бұл AWK бағдарламасының өзінен «` - »бастап бастау үшін аргументтерді қолдануға ыңғайлы. Бұл көбінесе басқа POSIX бағдарламалары пайдаланатын конвенцияны талдайтын дәлелге сәйкес келеді.

Үйлесімділік режимінде кез келген басқа опциялар жарамсыз деп белгіленеді, бірақ басқаша еленбейді. Қалыпты жұмыс кезінде, бағдарлама мәтіні берілсе, өңдеуге арналған ARGV массивіндегі AWK бағдарламасына белгісіз параметрлер жіберіледі. Бұл, әсіресе, AWK бағдарламаларын іске қосу үшін «#!» Орындалатын аудармашы механизмі арқылы пайдалы.

AWK БАҒДАРЛАМАСЫН ОРЫНДАУ

AWK бағдарламасы үлгі-әрекет туралы мәлімдемелердің және қосымша функциялардың анықтамаларының қатарынан тұрады.

үлгі { action statements }

функция атауы ( параметр тізімі ) { statements }

Gawk алдымен бағдарлама файлын бағдарлама-файлдардан , егер көрсетілген болса, аргументтерден --source-ға немесе пәрмен жолында бірінші нұсқасы жоқ дәлелден оқиды . -f және --source опциялары пәрмен жолында бірнеше рет пайдаланылуы мүмкін. Gawk бағдарлама мәтінін барлық бағдарлама файлдары мен пәрмен жолы мәтіндерінің бірге біріктірілген секілді оқиды. Бұл AWK функцияларының кітапханаларын құру үшін, оларды қолданатын әр жаңа AWK бағдарламасына қоспай-ақ, пайдалы. Сонымен қатар, кітапхана функцияларын пәрмен жолы бағдарламалары арқылы араластыруға мүмкіндік береді.

AWKPATH ортасының айнымалы мәні -f параметрімен аталған бастапқы файлдарды табу кезінде іздеу жолын анықтайды. Егер бұл айнымалы болмаса, әдепкі жол «.: / Usr / local / share / awk» болып табылады . (Іс-әрекет каталогы гауктың қалай құрастырылғанына және орнатылуына байланысты өзгеруі мүмкін). -f параметріне берілген файл атауында `` / 'таңбасы болса, жол іздеу орындалмайды.

Гаук AWK бағдарламаларын келесі тәртіппен орындайды. Біріншіден, -v параметрі арқылы анықталған барлық айнымалы тапсырмалар орындалады. Содан кейін, gawk бағдарламаны ішкі формада құрастырады. Содан кейін, gawk BEGIN блогындағы ( лерінде) кодты орындайды және ARGV массивінде аталған әрбір файлды оқуға кіріседі . Егер пәрмен жолында файлдар жоқ болса, gawk стандартты енгізуді оқиды.

Егер пәрмен жолында файл аты бар = val болса, ол айнымалы тағайындау ретінде қарастырылады. Айнымалы айнымалы var тағайындалады. (Бұл кез келген BEGIN блоктары іске қосылғаннан кейін орын алады). Командалық жолдың ауыспалы тағайындалуы AWK өрістерге және жазбаларға кірудің қалай бұзылғанын бақылау үшін пайдаланатын айнымалы мәндерге динамикалық тағайындау үшін өте пайдалы. Сондай-ақ, егер деректерді бір файлда бірнеше рет өту қажет болса, басқару күйі үшін пайдалы.

Егер АРГВ- ның белгілі бір элементінің мәні бос болса ( «» ), онда гавк оны өткізіп жібереді.

Кірістіктегі әрбір жазба үшін AWK бағдарламасындағы кез-келген үлгіге сәйкес келетінін көру үшін gawk сынақтары. Жазба сәйкес келетін әрбір үлгі үшін, байланысты әрекет орындалады. Үлгілер бағдарламада орын алған тәртіпте тексеріледі.

Ақыр соңында, барлық кіріс толтырылғаннан кейін, gawk END блогындағы ( лерінде ) кодты (бар болса) орындайды.

Айнымалылар, жазбалар және өрістер

AWK айнымалылары динамикалық; олар алғаш рет пайдаланылғанда пайда болады. Олардың мәндері өзгермелі нүктелер сандары немесе жолдар немесе олардың екеуі де пайдаланылатынына байланысты. AWK-да бір өлшемді массивтер бар; бірнеше өлшемдері бар массивтерді модельдеуге болады. Бірнеше алдын-ала анықталған айнымалы бағдарламалар бағдарлама ретінде іске қосылады; олар қажетіне қарай сипатталады және төменде келтірілген.

Жазбалар

Әдетте, жазбалар жаңа сызық таңбаларымен бөлінеді. Жазбалардың RS енгізілген айнымалы айнымалы мәнге тағайындалуы арқылы қалай бөлінетінін бақылауға болады. Егер RS - жалғыз таңба болса, онда бұл таңба жазбаларды бөледі. Әйтпесе, RS - тұрақты өрнек. Бұл қалыпты өрнекке сәйкес келетін енгізудегі мәтін жазбаны бөледі. Дегенмен, үйлесімділік режимінде, жазбаларды бөлу үшін жолдың бірінші мәнін ғана қолдануға болады. Егер RS бос жолға орнатылса, онда жазбалар бос жолдармен бөлінеді. RS бос жолға орнатылса, жаңа жол таңбасы әрдайым FS-нің кез-келген мәніне қосымша өріс бөлгіш ретінде қолданылады.

Өрістер

Әрбір кіріс жазбасы оқылған сайын, gawk FS айнымалы мәнін өріс бөлгіші ретінде пайдаланып, өрістерді жазады. Егер FS жалғыз таңба болса, өрістер сол таңба бойынша бөлінеді. Егер FS бос жол болса, әр жеке таңба жеке өріс болып табылады. Олай болмаған жағдайда, FS толық тұрақты өрнек болады деп күтілуде. FS бірыңғай кеңістік болса, өрістер кеңістіктердің және / немесе қойындылар және / немесе жаңа сызықтармен бөлінеді. (Бірақ талқылауды қараңыз --posix , төмен). ЕСКЕРТПЕ: IGNORECASE мәні (төменде қараңыз) FS тұрақты өрнек болғанда өрістердің қалай бөлінгеніне және RS тұрақты өрнекте болғанда жазбалар қалай бөлінетініне әсер етеді.

FIELDWIDTHS айнымалы сандардың бос орындар тізіміне орнатылса, әр өрістің бекітілген ені болады және gawk белгіленген ентерді пайдаланып жазуды бөледі. FS мәні еленбейді. FS үшін жаңа мән тағайындау FIELDWIDTHS пайдалануды болдырмайды және әдепкі әрекетті қалпына келтіреді.

Кіріс жазбадағы әрбір өріс оның орналасуы, $ 1 , $ 2 және т.б. арқылы сілтеме жасай алады. $ 0 - бұл бүкіл рекорд. Өрістерге тұрақты мәндермен сілтеме жасау керек емес:

n = 5
print $ n

кіріс жазбасында бесінші өрісті басып шығарады.

NF айнымалысы кіріс жазбадағы өрістердің жалпы санына орнатылады.

Жоқ өрістерге арналған сілтемелер (яғни NF кейінгі өрістер) нөлдік жолды шығарады. Алайда, жоқ өрістерге тағайындау (мысалы, $ (NF + 2) = 5 ) NF мәнін арттырады, кез келген аралас өрістерді нөлдік жолмен олардың мәні ретінде жасайды және $ 0 мәнін recomputed өрістер ОСС мәнімен бөлінеді. Теріс нөмірленетін өрістерге арналған сілтемелер қателікке әкеледі. NF төмендеуі өрістердің мәндерін жоғалтатын жаңа мәннің мәніне және өрістердің OFS мәнімен бөлінген кезде қайта есептелетін $ 0 мәніне себеп болады.

Бар өріске мән тағайындау, егер $ 0 сілтеме жасалса, бүкіл жазбаның қайта құрылуына әкеледі. Сол сияқты, $ 0 мәнін тағайындау жазбаны өрістетуді және өрістерге жаңа мәндерді жасауды тудырады.

Кірістірілген айнымалылар

Gawk- дің кіріктірілген айнымалы мәндері:

ARGC

Пәрмен жолының аргументтерінің саны ( gawk нұсқасын немесе бағдарламаның көзін қамтиды).

ARGIND

Ағымдағы файлдағы ARGV индексі өңделеді.

ARGV

Пәрмен жолының аргументтерінің жиыны. Жиын 0-ден ARGC- ге индекстеледі - 1. ARGV мазмұнын динамикалық өзгерту деректер үшін пайдаланылатын файлдарды басқара алады.

BINMODE

POSIX емес жүйелерде барлық файлдық енгізу / шығару үшін «екілік» режимін пайдалануды анықтайды. 1, 2 немесе 3 сандық мәндерінде кіріс файлдары, шығыс файлдары немесе барлық файлдар тиісінше екілік I / O пайдалану керек екенін көрсетеді. «R» немесе «w» жолының мәндері сәйкесінше кіріс файлдары немесе шығару файлдары тиісінше екілік енгізу / шығару пайдалану керек екенін көрсетеді. «Rw» немесе «wr» жолының мәндері барлық файлдар екілік енгізу / шығару пайдалану керек екенін көрсетеді. Кез-келген басқа жолдың мәні «rw» ретінде қарастырылады, бірақ ескерту хабарын шығарады.

CONVFMT

Әдепкі бойынша, сандар үшін «% .6g» түрлендіру пішімі.

ENVIRON

Ағымдағы орта мәндерін қамтитын массив. Массив айнымалы мәндермен индекстеледі, әрбір элемент бұл айнымалы мән болып табылады (мысалы, ENVIRON [«HOME»] / home / arnold болуы мүмкін). Бұл жиынды өзгерту өзгертуді немесе жүйе () функциясы арқылы кеңейтетін бағдарламаларды көретін ортаға әсер етпейді.

ERRNO

Егер жүйелік қате немесе getline үшін бағыттауды орындау, readline үшін немесе read (close) кезінде () кезінде ERRNO қатені сипаттайтын жолды қамтиды. Мән ағылшын емес жерлерде аударылуға жатады.

FIELDWIDTHS

Өріс қабаттарының ақ кеңістігі бөлек тізімі. Орнатылған кезде, gawk FS айнымалы мәнін өріс бөлгіші ретінде пайдаланудың орнына, тіркелген енінің өрістеріне енгізеді.

ФАЙЛ АТАУЫ

Ағымдағы енгізу файлының атауы. Егер пәрмен жолында ешқандай файл көрсетілмесе, FILENAME мәні `` - '' болып табылады. Дегенмен, FILENAME BEGIN блогында анықталмаған (егер getline арқылы орнатылмаса).

FNR

Ағымдағы енгізу файлындағы енгізу жазба нөмірі.

FS

Енгізу өрісінің ажыратқышы, әдепкі бойынша бос орын. Жоғарыдағы өрістерді қараңыз.

IGNORECASE

Барлық қалыпты өрнектер мен жол операцияларының регистрге сезімталдығын басқарады. Егер IGNORECASE нольдік емес мән болса, онда FS- мен өрісті бөлу, RS- мен бөлектеу, тұрақты және ' ~' және ' ~' және ' gensub' ' ,' gsub () , index () , сәйкестік () , split () және sub () кірістірілген функциялары әдеттегі өрнектерді орындау кезінде жағдайды елемейді. ЕСКЕРТПЕ: Массивнің бағалануына әсер етілмейді , сондай-ақ asort () функциясы.

Осылайша, егер IGNORECASE нөлге тең болмаса, / aB / «ab» , «aB» , «Ab» және «AB» барлық жолдарына сәйкес келеді. Барлық AWK айнымалы мәндерінде болғандай, IGNORECASE бастапқы мәні нөлге тең, сондықтан қалыпты өрнектер мен жол операциялар әдетте регистрге сезімтал. Unix-тің астында ISO 8859-1 латын-1-нің толық жиынтығы елемеу жағдайында пайдаланылады.

LINT

AWK бағдарламасынан - lint параметрін динамикалық басқаруды қамтамасыз етеді. Шынайы болған кезде, гаук линц ескертулерін басып шығарады. Егер жалған болса, онда ол жоқ. Сәттілік мәні «өлімге» тағайындалғанда, линт туралы ескертулер қате қателеседі , дәл сол сияқты - lint = өлім . Кез-келген басқа нақты мән ескертуді басып шығарады.

NF

Ағымдағы енгізу жазбасындағы өрістердің саны.

NR

Осы уақытқа дейін көрген жазбалардың жалпы саны.

OFMT

Әдепкі бойынша, сандар үшін «% .6g» шығу пішімі.

OFS

Шығатын өріс бөлгіші, әдепкі бойынша бос орын.

ORS

Әдепкі бойынша, жаңа сызық бойынша шығыс рекордерін бөлгіш.

PROCINFO

Бұл массивтің элементтері AWK AWK бағдарламасы туралы ақпаратты алуға мүмкіндік береді. Кейбір жүйелерде кейбір « n » тобы арқылы « group1» массивіндегі элементтер болуы мүмкін, бұл процесс бар қосымша топтардың саны. Осы элементтерді тексеру үшін оператордан пайдаланыңыз. Мынадай элементтер қол жетімді болуы кепілдік беріледі:

PROCINFO [«egid»]

getegid (2) жүйелік қоңыраудың мәні.

PROCINFO [«euid»]

geteuid (2) жүйелік қоңыраудың мәні.

PROCINFO [«FS»]

FS көмегімен өріс бөлінуі орын алғанда, «FS» немесе «FIELDWIDTHS» FIELDWIDTHS өрісіне бөлінген жағдайда қолданылады .

PROCINFO [«gid»]

(2) жүйелік қоңыраудың мәні.

PROCINFO [«pgrpid»]

ағымдағы үдерістің процестің топтық идентификаторы.

PROCINFO [«pid»]

ағымдағы үрдістің процесті идентификаторы.

PROCINFO [«ppid»]

ағымдық үрдістің басты процесс идентификаторы.

PROCINFO [«uid»]

getuid (2) жүйелік қоңыраудың мәні.

RS

Әдепкі бойынша, жаңа жолды енгізу жазба бөлгіші.

RT

Жазуды аяқтаушы. Gawk RT таңбаны немесе РС көрсетілген тұрақты өрнекке сәйкес келетін кіріс мәтініне орнатады.

RSTART

Матчпен сәйкес келетін бірінші таңба индексі () ; 0 сәйкестік болмаса. (Бұл кейіпкерлердің индекстерінің бірінен басталатынын білдіреді.)

RLENGTH

Сәйкесінше жолдың ұзындығы () ; -1 сәйкестігі болмаса.

SUBSEP

Көптеген әріптерді массив элементтерінде бөлуге арналған таңбалар, әдепкі бойынша «\ 034» .

TEXTDOMAIN

AWK бағдарламасының мәтіндік домені; бағдарлама жолдарына жергілікті аудармаларды табу үшін пайдаланылады.

Массивтер

Массивдер тік жақшалар ( [ және ] ) арасындағы өрнекпен жазылады. Егер өрнек экспресстер тізбесі ( expr , expr ...) болса, онда жиым әріпсандары SUBSEP айнымалы мәнімен бөлінген әр өрнектің (жолдың) мәнін біріктіруден тұратын жол болып табылады. Бұл мүмкіндік көп өлшемді массивтерді моделдеу үшін пайдаланылады. Мысалға:

i = «A»; j = «B»; k = «С»
x [i, j, k] = «Сәлем, әлем \ n»

«hello, world \ n» жолын «A \ 034B \ 034C» жолымен индекстелген массивтің x элементіне тағайындайды. AWK-дегі барлық массивтер ассоциативті болып табылады, яғни жол мәндері бойынша индекстеледі.

Арнайы оператор егер алапта белгілі бір мәннен тұратын индекстің бар-жоғын білу үшін, if немесе while операторында қолданылуы мүмкін.

if (val арада) print array [val]

Егер алапта бірнеше әріпсандар болса, массивте (i, j) пайдаланыңыз.

Құрылыста алаптың барлық элементтерінен итерациялау үшін циклда пайдалануға болады.

Элемент жоюдан алып тастау арқылы массивтен жойылуы мүмкін. Жою сөзін алаптың барлық мазмұнын жою үшін ғана пайдалануға болады, массивтің атын индекстік белгісіз көрсете аласыз.

Айнымалы теру және түрлендіру

Айнымалылар мен өрістер (өзгермелі нүкте) сандар немесе жолдар немесе екеуі де болуы мүмкін. Айнымалының мәні қалай түсіндіріледі, оның контекстіне байланысты. Егер сандық өрнекте пайдаланылса, ол жол ретінде қолданылса, ол жол ретінде қарастырылатын сан ретінде қарастырылады.

Айнымалы мәнді сан ретінде қарастыруға мәжбүрлеу үшін оған 0 қосыңыз; оны жол ретінде қарастыруға мәжбүрлеп, оны бос жолмен байланыстырыңыз.

Жолды санға түрлендіру қажет болғанда, түрлендіру strtod (3) арқылы орындалады . Санды sprintf (3) үшін пішім жолы ретінде CONVFMT мәнін пайдалана отырып, айнымалы мәннің сандық мәні аргумент ретінде пайдаланылады. Алайда, AWK-дағы барлық сандар өзгермелі нүкте болса да, интегралдық мәндер әрқашан бүтін сандар түрінде айналдырылады. Осылайша, берілген

CONVFMT = «% 2.2f» a = 12 b = а «»

айнымалы b «12» жолының мәні және «12.00» емес .

Gawk салыстыруды келесідей атқарады: Егер екі айнымалы сан сан болса, олар сандық түрде салыстырылады. Егер бір мән сандық болса, ал екіншісі `` сандық жол '' жолының мәні болса, салыстыру ақ сандық түрде жасалады. Әйтпесе, сандық мән жолға түрлендіріледі және жол салыстыру орындалады. Әрине, екі стринг салыстырылады. POSIX стандарты барлық жерде, тіпті тұрақты мәндерді беру үшін, «сандық жол» түсінігін қолданады. Дегенмен, бұл дұрыс емес, ал гавк мұны жасамайды. (Бақытымызға қарай, бұл стандарттың келесі нұсқасында бекітілген.)

«57» жолының тұрақты мәндері сандық жолдар болып табылмайтынын ескеріңіз , бұл жолдың тұрақты мәндері. «Сандық жол» идеясы тек өрістерге, getline кірісіне, FILENAME , ARGV элементтеріне, ENVIRON элементтеріне және сандық жолдармен бөлінген split () құрайтын элементтерге қолданылады. Негізгі идея пайдаланушы кірісін және сандық көрінетін тек пайдаланушы кірісін солай қарастырған жөн.

Uninitialized айнымалы мәндерде сандық мән 0 және жолдың мәні «» (бос немесе бос, жол) болады.

Сегіз және он алтылық тұрақты

Gawk нұсқасының 3.1 нұсқасынан бастап, AWK бағдарламасының бастапқы кодының C-стилінде сегіздік және он алтылық тұрақты мәндерін қолдануға болады. Мысалы, сегіздік мәні 011 ондық ондыққа тең және он алтылық мәні 0x11 ондық санға тең.

String Constants

AWK жолының тұрақты мәндері - қос тырнақшалар ( « ) арасындағы таңбалардың бірізділігі. Сызықтар ішінде белгілі бір құтқару тізбегі С-дағыдай танылады. Олар мыналар:

\\

Кәдімгі кері қиғаш сызық.

\ a

«Сигнал» белгісі; әдетте ASCII BEL таңбасы.

\ b

артқа.

\ f

пішін беру.

\ n

жаңа сызық.

\ r

аралық қайтару.

\ t

көлденең табуляция.

\ v

тік қойындысы.

\ x әртүрлі сандар

Онда он алтылық сандар жолымен ұсынылған \ x . ANSIC-дегідей, келесі он алтылық сандар құтылу дәйектілігінің бөлігі ретінде қарастырылады. (Бұл функция бізге комитеттің тілдік құрылымы туралы бірдеңе айтуы керек). Мысалы, «\ x1B» - ASCIIESC (қашу) таңбасы.

\ ddd

Сегіз сандардың 1-, 2- немесе 3-таңбалы тізбегі ұсынылған таңба. Мысалы, «\ 033» - ASCII ESC (құтылу) таңбасы.

\ c

Кәдімгі таңба c .

Қашу қатарын тұрақты тұрақты өрнектерде де пайдалануға болады (мысалы, / [\ t \ f \ n \ r \ v] / бос орын таңбаларына сәйкес келеді).

Үйлесімділік режимінде, сегіздік және он алтылық еске алу сценарийлерімен ұсынылған таңбалар қарапайым өрнек тұрақтыларында қолданылған кезде ғана көрінеді. Осылайша / a \ 52b / тең / a \ * b / .

Мысалдар мен әрекеттер

AWK желіге бағытталған тіл болып табылады. Алдымен модель, содан кейін әрекет. Әрекет туралы мәлімдемелер { және } . Немесе үлгіні жоғалтуы мүмкін немесе іс-әрекеттің болмауы мүмкін, бірақ, әрине, екеуінің де біреуі емес. Егер үлгі жоқ болса, әрекет енгізудің әрбір жазбасы үшін орындалады. Жетіспеген әрекет тең

{басып шығару}

ол бүкіл жазбаны басып шығарады.

Түсініктемелер '`#' 'таңбасымен басталады және жолдың соңына дейін жалғасады. Бос жолдар операторларды бөлектеу үшін пайдаланылуы мүмкін. Әдетте, мәлімдеме жаңа сызықпен аяқталады, дегенмен, бұл ``, '', { , ? , : , && немесе || . Әрекетпен аяқталатын сызықтар немесе олардың келесі сөздері автоматты түрде жалғасады. Басқа жағдайларда, жолды «аяқталмай» қалдыруға болады, бұл жағдайда жаңа жол елемейді.

Көптеген мәлімдемелер оларды бір жолға `` `; Бұл үлгі-әрекет жұбының әрекет ету бөлігіндегі мәлімдемені (әдеттегі жағдайда) және үлгі-әрекет туралы мәлімдемелерге де қатысты.

Үлгілер

AWK үлгілері төмендегілердің бірі болуы мүмкін:

BEGIN END / тұрақты өрнек / реляциялық өрнек үлгісі && үлгі үлгісі || үлгі үлгісі ? үлгі : үлгі ( үлгі ) ! pattern1 , pattern2

BEGIN және END - бұл кіруге қарсы сыналмаған екі ерекше үлгілер. Барлық BEGIN үлгілерінің әрекеттер бөліктері барлық мәлімдемелер бір BEGIN блогында жазылған секілді біріктіріледі. Олар қандай да бір енгізудің алдында оқылады. Сол сияқты, барлық END блоктар біріктіріліп, барлық кіріс шығып кеткенде орындалады (немесе шығу нұсқаулары орындалса). BEGIN және END үлгілерін үлгілік өрнектердегі басқа үлгілермен біріктіру мүмкін емес. BEGIN және END үлгілерінде әрекет бөліктері болмауы мүмкін.

Тұрақты өрнек / үлгілер үшін, тиісті өрнектер тұрақты өрнекке сәйкес келетін әрбір кіріс жазбасы үшін орындалады. Тұрақты өрнектер egrep (1) сияқты бірдей және төменде келтірілген.

Реляциялық өрнектер әрекеттер бөлімінде төменде анықталған операторлардың кез-келгенін пайдалана алады. Олар, әдетте, кейбір өрістер белгілі бір қалыпты өрнектерге сәйкес келетінін тексереді.

&& , || , және ! операторлар логикалық ЖӘНЕ, логикалық НЕМЕСЕ және логикалық ЕМЕС емес, C. сияқты олар қысқа тұйықталу бағасын, сонымен қатар C сияқты, және одан да көп қарабайырлық өрнектерді біріктіру үшін пайдаланылады. Көптеген тілдердегі сияқты жақшалар бағалау тәртібін өзгерту үшін пайдаланылуы мүмкін.

?? Операторы сол операторға ұқсас C. Егер бірінші үлгі дұрыс болса, онда тестілеу үшін пайдаланылған үлгі екінші үлгі болып табылады, әйтпесе ол үшінші болып табылады. Тек екінші және үшінші үлгілердің бірі ғана бағаланады.

Өрнекті pattern1 , pattern2 пішіні ауқым үлгісі деп аталады. Ол барлық кіріс жазбаларын pattern1 сәйкес келетін жазбадан бастап және pattern2 сәйкес келетін жазбаға дейін жалғасады. Ол кез-келген үлгі өрнекпен үйлеспейді.

Тұрақты өрнектер

Тұрақты өрнектер - бұл egrep-та табылған кеңейтілген түрі. Олар мынадай белгілерден тұрады:

с

метасарылмайтын затқа сəйкес келеді c .

\ c

символға сәйкес келеді c .

.

жаңа жолды қамтитын кез келген таңбаға сәйкес келеді.

^

жолдың басына сәйкес келеді.

$

жолдың соңына сәйкес келеді.

[ abc ... ]

таңбалар тізімі abc таңбаларының кез келгеніне сәйкес келеді.

[^ abc ... ]

таңбалар тізімінен бас тарту, abc басқа кез келген таңбаға сәйкес келеді.

r1 | r2

ауысуы: r1 немесе r2 сәйкес келеді.

r1r2

concatenation: r1 және одан кейін r2 сәйкестігі.

r +

бір немесе бірнеше сәйкес келеді.

r *

нөл немесе одан көп санына сәйкес келеді.

r ?

нөлге немесе біреуіне сәйкес келеді.

( r )

топтау: сәйкестік r .

r { n }

r { n ,}

r { n , m } жақшалар ішіндегі бір немесе екі сан аралық өрнекті білдіреді . Егер жақшаларда бір нөмір болса, алдыңғы р тұрақты өрнек n рет қайталанады. Егер үтірмен бөлінген екі сан болса, онда r- дан n- ға дейін қайталанады. Егер бір нөмірдің үтірмен кейінгі саны болса, онда r кем дегенде n рет қайталанады.

Аралық өрнектер тек --posix немесе --re-interval пәрмен жолында көрсетілсе ғана қол жетімді болады.

\ y

бос жолға сөздің басында немесе соңында сәйкес келеді.

\ B

сөз ішіндегі бос жолға сәйкес келеді.

\ <

сөздің басында бос жолға сәйкес келеді.

\>

сөздің соңында бос жолға сәйкес келеді.

\ w

кез-келген сөз-құрамдас таңба (әріп, сан немесе астын сызу) сәйкес келеді.

\ W

сөз құраушы емес кез келген таңбаға сәйкес келеді.

\ `

буфердің (жолдың) басында бос жолға сәйкес келеді.

\ '

буфердің соңындағы бос жолға сәйкес келеді.

Жолдың тұрақты мәндерінде қолданылатын құтқару тізбектері (төменде қараңыз) тұрақты өрнектерде де жарамды.

Таңбалар кластары - POSIX стандартында енгізілген жаңа мүмкіндік. Таңбалық класс - белгілі бір төлсипатқа ие таңбалар тізімін сипаттау үшін арнайы белгілер, бірақ нақты таңбалардың өздері елден елге және / немесе таңба таңбаларынан таңбалар жиынынан өзгеше болуы мүмкін. Мысалы, АҚШ-та және Францияда әліпбилік сипаттағы нәрсе ерекшеленеді.

Таңбалар сыныбы таңбалар тізімінің жақшаларындағы тұрақты өрнекте ғана жарамды. Таңбалар кластары [: , классты білдіретін кілт сөз, және :] тұрады . POSIX стандартында анықталған таңбалар кластары:

[: alnum:]

Әріптік-сандық таңбалар.

[: альфа:]

Алфавиттік таңбалар.

[: бос:]

Кеңістік немесе қойынды таңбалары.

[: cntrl:]

Басқару таңбалары.

[: таңбалар:]

Сандық таңбалар.

[: диаграмма:]

Басып шығарылатын және көрінетін таңбалар. (Бос орын басып шығарылады, бірақ көрінбейді, ал екеуі де бірдей).

[: төменгі:]

Төменгі әріптік әріптер.

[: басып шығару:]

Басып шығарылатын таңбалар (таңбалар емес, таңбалар).

[: пункт:]

Тыныс белгілері (әріптер, сандар, басқару таңбалары немесе бос орын емес таңбалар).

[:ғарыш:]

Ғарыштық таңбалар (мысалы, бос орын, қойынды және форма беру, бірнеше атау үшін).

[: жоғарғы:]

Жоғарғы әріптік әріптер.

[: xdigit:]

Он алтылық сандар болатын таңбалар.

Мысалы, POSIX стандарты алдында, әріптік-сандық таңбаларды сәйкестендіру үшін / [A-Za-z0-9] / жазу керек еді. Егер таңбалар жинағыңызда басқа әліпбилік таңбалар болса, бұл оларға сәйкес келмейді және егер таңбалар жинағы ASCII-тен басқаша жинақталған болса, бұл тіпті ASCII әріптік-сандық таңбаларына сәйкес келмеуі мүмкін. POSIX таңба сыныптарымен / [[: alnum:]] / жаза аласыз және бұл таңбалар жинағындағы әліпбилік және сандық таңбаларға сәйкес келеді.

Таңбалар тізімдерінде екі қосымша арнайы рет пайда болуы мүмкін. Олар бір символдан тұратын біртекті таңбалар ( топтастыру элементтері деп аталатын) болуы мүмкін ASCII емес таңбалар жиындарына, сондай-ақ топтастыру немесе сұрыптау мақсаттарына балама болатын бірнеше таңбаға қолданылады. (Мысалы, француз тілінде, «е» жазықтығы және ауыр-үсеткіш e` балама.)

Белгілерді қиыстыру

Байланыстыру символы - [. және .] . Мысалы, егер ch элементінің жиынтығы болса, [[.ch.]] Осы топтастыру элементіне сәйкес келетін тұрақты өрнекті, ал [ch] - c немесе h сәйкес келетін тұрақты өрнек.

Эквиваленттік сыныптар

Эквиваленттік класс - баламалы таңбалар тізімінің жергілікті ерекшелігі. Аты [= және =] ішінде жазылған . Мысалы, атау барлық «` е »,« `` е », '' және` `` `` '' дегенді білдіреді. Бұл жағдайда [[= e =]] - e , e ' немесе e' кез келгеніне сәйкес келеді.

Бұл мүмкіндіктер ағылшын тілінде сөйлемейтін жерлерде өте құнды. Кітапханада Gawk әдеттегі өрнек сәйкестігі үшін пайдаланылады, қазіргі уақытта тек POSIX таңба сыныптарын таниды; олар жиынтық таңбаларын немесе эквиваленттік сыныптарды танымайды.

\ Y , \ B , \ < , \> , \ w , \ W , \ ` , және \ операторлары гаук үшін ерекше; олар GNU стандартты экспресс кітапханаларында орналасқан құралдарға негізделген кеңейтімдер болып табылады.

Әртүрлі пәрмен жолы параметрлері гауктың қалыпты өрнектерде қалай түсіндіретінін басқарады.

Жоқ опциялар

Әдепкі жағдайда, gawk POSIX қалыпты өрнектерінің барлық мүмкіндіктерін және жоғарыда сипатталған GNU тұрақты өрнек операторларын қамтамасыз етеді. Алайда аралық өрнектерге қолдау көрсетілмейді.

--posix

Тек POSIX тұрақты өрнектеріне қолдау көрсетіледі, GNU операторлары арнайы емес. (Мысалы, \ w w әдеттегі w сәйкес келеді). Аралық өрнектерге рұқсат етіледі.

--дәстүрлі

Дәстүрлі Unix әдеттегі өрнектер сәйкес келеді. GNU операторлары арнайы емес, аралық өрнектер қол жетімді емес және POSIX таңба сыныптары ( [[: alnum:] және т.б.). Сексақтық және он алтылықты қашып кету тізбектерімен сипатталатын таңбалар, тіпті егер олар тұрақты түрде метакарактерді білдіреді.

- үзіліссіз

Үздіксіз өрнектерде аралық өрнектерді, тіпті егер - дәстүрлі түрде берілсе де, рұқсат етіңіз.

Әрекеттер

Әрекет туралы мәлімдемелер браузерлерде, { және } . Әрекеттер туралы мәлімдемелер көптеген тілдерде анықталған әдеттегі тапсырма, шартты және циклдық мәлімдемелерден тұрады. Операторлар, бақылау мәлімдемелері және кіріс / шығыс мәлімдемелері C.

Операторлар

AWK операторлары, басымдықты төмендету тәртібі бойынша

( ... )

Топтау

$

Өріс анықтамасы.

++ -

Үлкейту және азайту, екеуі де префикс және постфикс.

^

Exponentiation ( ** пайдаланылуы мүмкін және ** = тағайындау операторы үшін).

+ -!

Unary plus, unary минус және логикалық терістеу.

* /%

Көбейту, бөлу және модуль.

+ -

Қосылу және азайту.

ғарыш

Сызықтарды біріктіру.

<>

<=> =

! === Тұрақты байланыс операторлары.

~! ~

Тұрақты өрнек сәйкестігі, келісілмеген матч. ЕСКЕРТПЕ: Сол жақта ~ ~ немесе ~ ~ тұрақты тұрақты өрнек ( / foo / ) пайдаланбаңыз. Оң жағындағы біреуін ғана пайдаланыңыз. Өрнек / foo / ~ exp мәні бар (($ 0 ~ / foo /) ~ exp ) . Әдетте бұл әдейі емес.

кіреді

Массив мүшелігі.

&&

Логикалық ЖӘНЕ.

| |

Логикалық НЕМЕСЕ.

?:

C шартты өрнегі. Бұл form expr1 бар ма? expr2 : expr3 . Expr1 шын болса, өрнектің мәні expr2 , әйтпесе ол expr3 болып табылады. Expr2 және expr3-дің тек біреуі ғана бағаланады.

= + = - =

* = / =% = ^ = Тапсырма. Абсолютті тағайындау ( var = value ) және оператор-тағайындау (басқа нысандар) қолдау көрсетіледі.

Бақылау мәліметтері

Басқару мәлімдемелері төмендегідей:

if ( condition ) statement [ else statement ] while ( condition ) statement do statement ( case ) for ( expr1 ; expr2 ; expr3 ) statement for ( arride in array ) операторы break continue resume array [ index ] delete array exit [ expression ] { мәлімдемелер }

I / O мәлімдемелері

Кіріс / шығыс мәлімдемелері келесідей:

жабу ( файл [ , қалай ] )

Файлды, құбырды немесе бірлескен процесті жабыңыз. Екi жақты құбырдың бiр жағын бiрлескен процеске жабу кезiндегi опцияны қалай пайдалануға болады. Ол жолдың мәні болуы тиіс, немесе «to» немесе «from» .

getline

Келесі кіріс жазбасынан $ 0 орнатыңыз; NF , NR , FNR параметрлерін орнатыңыз.

getline < файл

$ 0 файлдың келесі жазбасынан орнатыңыз; NF орнатыңыз.

getline var

Барды келесі кіріс жазбасынан орнатыңыз; NR , FNR параметрлерін орнатыңыз.

getline var < файл

Бар файлды келесі жазбасынан орнатыңыз.

команда getline [ var ]

Команданы іске қосыңыз, шығаруды $ 0 немесе var , жоғарыда көрсетілгендей етіп бағыттаңыз.

команда | & getline [ var ]

Шығарылымды жоғарыда көрсетілгендей $ 0 немесе var деп келтіретін ортақ процесс ретінде іске қосыңыз. Бірлескен үрдістер - бұл гауктың кеңеюі.

Келесі

Ағымдағы кіріс жазбасын өңдеуді тоқтатыңыз. Келесі кіріс жазбасы оқылады және AWK бағдарламасындағы алғашқы үлгімен өңдеу басталады. Егер кіріс деректерінің соңына жетсе, END блогы (лары) болса, орындалады.

nextfile

Ағымдағы енгізу файлын өңдеуді тоқтатыңыз. Келесі енгізу жазбасы келесі кіріс файлынан келеді. FILENAME және ARGIND жаңартылады, FNR 1 мәніне қайтарылады және өңдеу AWK бағдарламасының бірінші үлгісімен басталады. Егер кіріс деректерінің соңына жетсе, END блогы (лары) болса, орындалады.

басып шығару

Ағымдағы жазбаны басып шығарады. Шығыс жазбасы ORS айнымалы мәнімен аяқталады.

басып шығаратын экспресс-тізім

Өрнектерді басып шығарады. Әрбір өрнек OFS айнымалы мәнімен бөлінеді. Шығыс жазбасы ORS айнымалы мәнімен аяқталады.

print expr-list > файлын таңдаңыз

Файлдардағы өрнектерді басып шығарады. Әрбір өрнек OFS айнымалы мәнімен бөлінеді. Шығыс жазбасы ORS айнымалы мәнімен аяқталады.

printf fmt, экспресс-тізім

Пішімдеу және басып шығару.

printf fmt, экспр-тізім > файлын таңдаңыз

Файлды пішімдеу және басып шығару.

жүйе ( cmd-line )

Cmd-line пәрменін орындаңыз және шығу мәртебесін қайтарыңыз. (Бұл POSIX емес жүйелерде қол жетімді болмауы мүмкін.)

fflush ( [ файл ] )

Ашық шығу файлымен немесе құбыр файлымен байланысты кез-келген буферді жуу. Егер файл жоқ болса, онда стандартты шығару тазаланады. Егер файл бос жол болса, онда барлық ашық файлдар мен құбырлар өз аралықтарын тазартады.

Басып шығару және printf үшін қосымша шығаруды қайта бағыттауға рұқсат етіледі.

Басып шығару ... >> файлы

файлға шығуды қосады.

басып ... | команда

құбырда жазады.

басып ... | & пәрмені

деректерді ортақ өңдеуге жібереді.

Getline пәрмені файлдың соңында 0 және қатеге -1 қайтарады. Қате бойынша ERRNO мәселені сипаттайтын жолды қамтиды.

ЕСКЕРТПЕ: Егер трубаны немесе бірлескен үдерісті глайнды немесе басып шығарудан немесе цикл ішінде басып шығару арқылы қолдансаңыз, команданың жаңа даналарын жасау үшін close () функциясын пайдалану керек . AWK автоматты түрде құбырларды немесе EOF-ты қайтарған кезде бірлескен процестерді автоматты түрде жабады.

Printf мәлімдемесі

Printf үзіндісі мен sprintf () функциясының AWK нұсқалары (төменде қараңыз) келесі түрлендіру ерекшеліктері пішімдерін қабылдайды:

% c

ASCII таңбасы. Егер % c үшін қолданылатын аргумент сандық болса, ол таңба ретінде қарастырылады және басып шығарылады. Әйтпесе, дәлел жол деп есептеледі және сол жолдың жалғыз таңбасы басып шығарылады.

% d , % i

Ондық сан (бүтін бөлік).

% e,% E

Пішіннің өзгермелі нүкте нөмірі [-] d.dddddde [+ -] dd . % E форматында E орнына E пайдаланылады.

% f

Пішіннің өзгермелі нүкте нөмірі [-] ddd.dddddd .

% g,% G

% E немесе % f айналдыруды қолданыңыз, қайсысы қысқа болса, нөлдік нөлдер басылған. % G пішімі % e орнына % E пайдаланады.

% o

Қолтаңбаған сегіз санды (сонымен қатар бүтін сан).

% u белгісі жоқ ондық сан (қайтадан бүтін сан).

% s

Таңба жолы.

% x,% X

Қолтаңбасыз он алтылық сан (бүтін сан). % X пішімі abcdef орнына ABCDEF пайдаланады.

%%

% Бір таңба; ешқандай дәлел аударылмайды.

Қосымша, қосымша параметрлер % және басқару пәрмені арасында болуы мүмкін:

count $

Пішімдеудің осы нүктесіндегі есептік дәлелді қолданыңыз. Бұл позициялық спецификатор деп аталады және AWK бағдарламасының бастапқы мәтінінде емес, ең алдымен пішімделген жолдардың аударылған нұсқаларында пайдалануға арналған. Бұл гауктың кеңейтілуі.

-

Өрнек өз саласында өздігінен ақталуы керек.

ғарыш

Сандық түрлендіру үшін, бос мәнімен оң мәндерді префикс және минус белгісі бар теріс мәндер.

+

Ені модификаторларынан бұрын қолданылатын плюс белгісі (төменде қараңыз), пішімделетін деректер оң болса да, әрқашан сандық түрлендіруге белгі қоюды білдіреді. + Кеңістікті өзгертуге тыйым салады.

#

Кейбір бақылау әріптері үшін `` баламалы нысанды 'пайдаланыңыз. % O үшін жетекші нөлді жеткізіңіз. % X және % X үшін нөлден тыс нәтиже үшін жетекші 0x немесе 0X жеткізіңіз . % E , % E және % f үшін нәтиже әрқашан ондық нүктені қамтиды. % G және % G үшін нөлдік нөлдер нәтижеден жойылмайды.

0

Жетекші 0 (нөл) ту сияқты әрекет етеді, бұл шығарылымды бос орындардың орнына нөлдермен толтыруға тиіс. Бұл тіпті сандық емес пішімдерге де қолданылады. Бұл жалау тек өрістің ені басып шығарылатын мәннен кеңірек болғанда ғана әсер етеді.

ені

Өріс осы ені бойынша толтырылуы керек. Өріс әдетте кеңістіктермен толтырылады. Егер 0 жалау пайдаланылса, ол нөлмен толтырылады.

. алдын ала

Басып шығару кезінде пайдаланылатын дәлдікті анықтайтын сан. % E , % E және % f пішімдерінде бұл ондық нүктенің оң жағында басып шығарылатын сандардың санын анықтайды. % G және % G пішімдері үшін ол маңызды сандардың ең көп санын анықтайды. % D , % o , % i , % u , % x және % X пішімдері үшін, ол басып шығарылатын ең аз сандарды көрсетеді. % S үшін , ол басып шығарылуы керек жолдағы таңбалардың максималды санын анықтайды.

ANSI C printf () кіші бағдарламаларының динамикалық ені және алдыңғы мүмкіндіктері қолдаулы. A * ені немесе нақты ерекшеліктері орнына олардың мәндерін argument тізімінен printf немесе sprintf () параметріне шығаруға болады. Динамикалық ені немесе дәлдігі бар позициялық спецификті пайдалану үшін, формат жолында * кейінгі сандарды беріңіз. Мысалы, «% 3 $ * 2 $. * 1 $ s» .

Арнайы файл атаулары

Басып шығарудан немесе printf файлынан I / O қайта бағыттау кезінде немесе файлдан getline арқылы, gawk белгілі бір арнайы файл атауын таниды. Бұл файл атаулары файлдың ата-аналық процесінің мұраланған (әдетте қабық) мұраланған файлдық дескрипторларды ашуға мүмкіндік береді. Бұл файл атаулары деректер файлдарын атау үшін пәрмен жолында да қолданылуы мүмкін. Файл атаулары:

/ dev / stdin

Стандартты енгізу.

/ dev / stdout

Стандартты шығару.

/ dev / stderr

Стандартты қате шығару.

/ dev / fd / n

Ашық файлдың дескрипторымен байланысты файл.

Олар әсіресе қате туралы хабарлар үшін пайдалы. Мысалға:

Басып шығару «Сіз оны сындырдыңыз!» > «/ dev / stderr»

ал басқаша пайдалану керек еді

Басып шығару «Сіз оны сындырдыңыз!» | «мысықтар 1> & 2»

Келесі арнайы файл атаулары TCP / IP желілік қосылымдарын жасау үшін | & бірлесіп өңдеу операторымен қолданылуы мүмкін.

/ inet / tcp / lport / rhost / rport

Қашықтағы порт роттағы қашықтағы хост- ростқа жергілікті порттың локалында TCP / IP байланысы үшін файл. Жүйе портты таңдау үшін 0 портын пайдаланыңыз.

/ inet / udp / lport / rhost / rport

Ұқсас, бірақ TCP / IP орнына UDP / IP пайдалану.

/ inet / raw / lport / rhost / rport

Болашақта пайдалану үшін сақталған.

Басқа арнайы файл атаулары іске қосылған үдерістер туралы ақпаратқа қол жеткізуге мүмкіндік береді. Бұл файл атаулары енді ескірген. Олар берген ақпаратты алу үшін PROCINFO массивін пайдаланыңыз. Файл атаулары:

/ dev / pid

Бұл файлды оқу ағымдық процестің процестің идентификаторын ондық санға қайтарады, жаңа жолмен тоқтатылады.

/ dev / ppid

Бұл файлды оқу ағымдық үрдістің басты процесс идентификаторын ондық санға қайтарады, жаңа жолмен тоқтатылады.

/ dev / pgrpid

Бұл файлды оқу ағымдық процестің процестің топтық кодын ондық санға қайтарады, жаңа жолмен тоқтатылады.

/ dev / user

Бұл файлды оқу жаңа сызықпен аяқталған жалғыз жазбаны қайтарады. Өрістер бос орындармен бөлінеді. $ 1 - getuid (2) жүйелік шақыру, $ 3 - жүйелік шақырудың мәні, $ 4 - getegid (2) мәні, $ 2 - жүйелік қоңырау. Егер қосымша өрістер болса, олар getgroups (2) арқылы қайтарылған топтық идентификаторлар болып табылады. Көптеген топтарға барлық жүйелерде қолдау көрсетілмеуі мүмкін.

Сандық функциялар

AWK келесі кіріктірілген арифметикалық функцияларға ие:

atan2 ( y , x )

Y / x аргентингісін радианға қайтарады.

cos ( expr )

Радиандардағы экспре косинусын береді.

exp ( expr )

Экспоненциалды функция.

int ( expr )

Бүтін санға дейін қысқартады.

журнал ( expr )

Табиғи логарифм функциясы.

rand ()

0 мен 1 арасындағы кездейсоқ санды қайтарады.

күнә ( экспр )

Радиандардағы эксприн синусын қайтарады.

sqrt ( expr )

Квадрат түбірі функциясы.

srand ( [ expr ] )

Кездейсоқ сандар генераторы үшін жаңа тұқым ретінде экспрессияны пайдаланады. Егер ешқандай анықтама болмаса, күннің уақыты пайдаланылады. Қайтар- мағына - кездейсоқ сандардың генераторы үшін алдыңғы тұқым.

Жол функциялары

Gawk келесі кірістірілген жол функциялары бар:

асорт ( s [ , d ] )

Бастапқы массивтің элементтерінің санын қайтарады. Мазмұндары мәндерді салыстыру үшін gawk қалыпты ережелерін пайдаланып сұрыпталады және с- ның сұрыпталған мәндерінің индексі 1-ден бастап кезекпен бүтін сандармен ауыстырылады. Егер қосымша мақсатты массасы d көрсетілсе, онда s бірінші рет d , ал содан кейін d сұрыпталады, бастапқы массивтің индекстерін өзгеріссіз қалдырады.

gensub ( r , s , h [ , t ] )

R өрнегі r өрісіне сәйкес келетін мақсатты жолды іздеу. H - g немесе G бастап басталатын жол болса, онда r-ның барлық сәйкестігін ауыстырыңыз. Әйтпесе, h - r-ның қандай сәйкестігін көрсететін сан. Егер t берілмесе, орнына $ 0 пайдаланылады. Ауыстырылған мәтіннің s ішінде , \ n , мұнда n - 1-ден 9-ға дейінгі сан, n 'th жақшаланған субпропингке сәйкес келетін мәтінді көрсету үшін пайдаланылуы мүмкін. \ 0 кезектілігі бүкіл таңдалған мәтінді білдіреді, кейіпте & . Sub () және gsub () айырмашылығы, өзгертілген жол функцияның нәтижесі ретінде қайтарылады және түпнұсқа мақсатты жол өзгермейді.

gsub ( r , s [ , t ] )

Т жолындағы тұрақты өрнектің r- ға сәйкес келетін әрбір ішкі жол үшін s жолын ауыстырыңыз және ауыстыру санын қайтарыңыз. Егер t берілмесе, $ 0 пайдаланыңыз. Ауыстыру мәтіні & мәтінінде ауыстырылған мәтінмен ауыстырылады. Мәтінді алу үшін \ & & қолданыңыз. Sub () , gsub () және gensub () ішіндегі ауыстыру мәтініндегі & 's және back slides ережелерін толығырақ талқылау үшін GAWK: тиімді AWK бағдарламалау бөлімін қараңыз.)

индекс ( s , t )

String s ішіндегі индексінің индексін қайтарады, немесе егер t жоқ болса. (Бұл кейіпкерлердің индекстерінің бірінен басталатынын білдіреді.)

ұзындығы ( [ с ] )

S ұсынылмаса , жолдың ұзындығын қайтарады немесе $ 0 ұзындығын қайтарады .

сәйкестік ( s , r [ , a ] )

R өрнегі бар r жағдайында орынның орнын береді немесе егер r жоқ болса 0 және RSTART және RLENGTH мәндерін орнатады. Аргумент тәртібі ~ operator: str ~ re сияқты бірдей екенін ескеріңіз. Егер массивдер берілсе, онда а тазартылады, содан кейін элементтер 1-дан бастап n- ге дейін тиісті жақшаға ұқсайтын subexpression-ге сәйкес келетін бөліктермен толтырылады. 0-ші элемент барлық р тұрақты өрнекпен сәйкес келетін бөліктерді қамтиды.

бөлу ( s , a [ , r ] )

Жолдың s- ін жиымның тұрақты өрнегіндегі r- ге бөліп, өрістер санын қайтарады. Егер r жоқ болса, оның орнына FS қолданылады. Алдымен a алынады. Бөлу, жоғарыда сипатталған өрістерді бөлуге бірдей әрекет етеді.

sprintf ( fmt , экспресс-тізім )

Fmt бойынша экспрессия тізімін басып шығарады және алынған жолды қайтарады.

strtonum ( str )

Str тексереді, және оның сандық мәнін қайтарады. Егер str 0-ден бастап басталса, strtonum () str - сегіздік сан деп есептейді. Егер str 0x немесе 0X жетекшілерімен басталса, strtonum () бұл str - он алтылық сан деп есептейді.

sub ( r , s [ , t ] )

Gsub () сияқты, бірақ тек бірінші сәйкес келетін подстрок ғана ауыстырылады.

substr ( s , i [ , n ] )

I-дан басталатын n -character substring-дегі ең көп мәнді береді. Егер n жоқ болса, қалған бөлігі пайдаланылады.

tolower ( str )

Жол str- ның көшірмесін қайтарады, сол жолдағы барлық жоғарғы регистрлер тиісті сәйкесінше кіші әріптерге аударылады. Алфавиттік емес таңбалар өзгеріссіз қалады.

туппер (стр )

Жол str- ның көшірмесін қайтарады, сол жолдағы барлық төменгі рәміздер олардың тиісті жоғарғы жақты контенттеріне аударылады. Алфавиттік емес таңбалар өзгеріссіз қалады.

Уақыт функциялары

AWK бағдарламаларының негізгі пайдалануларының бірі уақыт мөрі туралы ақпаратты қамтитын журнал файлдарын өңдеу болғандықтан, gawk уақытша маркалар алу және оларды пішімдеу үшін келесі функцияларды қамтамасыз етеді.

mktime ( tarihpec )

Datestrip- ды systime () арқылы қайтарылған бірдей пішіндегі уақыт мөртабанына айналдырады. Datepec - YYYY MM DD HH MM SS [DST] пішінінің жолы. Жолдың мазмұны 6 немесе жеті сан, соның ішінде ғасыр, ай 1-ден 12-ге дейін, айдың күні 1-ден 31-ге дейін, күн сағаты 0-ден 23-ке дейін, минут 0-ден 59, екіншісі 0-ден 60-ға, ал қосымша күндізгі жазумен құпталады. Бұл сандардың мәндері көрсетілген ауқымдарда болмауы керек; мысалы, -1 сағат - түн ортасына дейін 1 сағатты білдіреді. Шығарылған нөлдік Григориан күнтізбесі жыл алдындағы 0 жылмен және жыл алдындағы жылмен -1 жылмен қабылданады. Уақыт жергілікті уақыт белдеуінде болады. Күндізгі жарық түсіру жалауы оң болса, уақыт күндізгі жарықтандыру уақыты деп есептеледі; егер нөл болса, уақыт қалыпты уақыт деп есептеледі; және егер теріс (әдепкі) болса, mktime () жазғы уақыттың белгіленген уақытында күшіне енетінін анықтауға тырысады. Егер datepec жеткілікті элементтерді қамтымаса немесе алынған уақыт ауқымнан тыс болса, mktime () қайтарады -1.

strftime ( [ формат [ , уақыт белгісі ]] )

Пішімдегі ерекшеліктерге сәйкес уақыт белгісін қалыптастырады . Уақыт белгісі systime () арқылы қайтарылған бірдей нысанда болуы керек. Уақыт белгісі жоқ болса, ағымдағы уақытты пайдаланылады. Егер пішім жоқ болса, күннің шығуына (1) баламалы әдепкі пішім қолданылады. ANSI C ішіндегі strftime () функциясының техникалық сипаттамасын қараңыз, ол қол жетімді болуға болатын форматты түрлендірулер үшін. Public-domain нұсқасы strftime (3) және оған арналған адам беті gawk арқылы келеді; егер бұл нұсқа гаукту құрастыруға пайдаланылса, сол адам бетінде сипатталған барлық өзгертулер бүркіт үшін қол жетімді .

systime ()

Күннің ағымдағы уақытын Epoch (1970-01-01 00:00:00 UTC) POSIX жүйесінен кейінгі секундтар саны ретінде қайтарады.

Бит-манипуляциялар функциялары

Gawk нұсқасының 3.1 нұсқасынан бастап келесі бит манипуляциясы функциялары қол жетімді. Олар екі дәлдікпен өзгермелі нүкте мәндерін белгісіз ұзақ бүтін санға айналдырып, операцияны жасап, нәтижені өзгермелі нүктеге айналдыру арқылы жұмыс жасайды. Функциялар:

және ( v1 , v2 )

V1 және v2 арқылы ұсынылған мәндер мен AND мәндерін қайтарыңыз.

compl ( val )

Валенттің қосымша бөлігін қайтарыңыз.

lshift ( val , count )

Есептегіш биттер бойынша солға жылжытылған қалақшаның құнын қайтарыңыз.

немесе ( v1 , v2 )

V1 және v2 арқылы ұсынылған мәндердің битальды OR-ны қайтарыңыз.

rshift ( val , count )

Санның мәнін қайтарыңыз, оң бит саны бойынша жылжытыңыз.

xor ( v1 , v2 )

V1 және v2 ұсынған мәндердің битальды XOR мәнін қайтарыңыз.

Интернационалдандыру функциялары

Gawk нұсқасының 3.1 нұсқасынан бастап, AWK бағдарламасының ішінде іске қосу кезінде жолдарды аудару үшін келесі функцияларды пайдалануға болады. Толық мәліметтер алу үшін GAWK бөлімін қараңыз : тиімді AWK бағдарламалау .

bindtextdomain ( каталог [ , домен ] )

Gawk файлдары «стандартты» орынға (мысалы, тестілеу кезінде) орналастырылмайтын немесе болмайтын жағдайда .mo файлдарын іздейтін каталогты көрсетеді. Ол '`bound' деген домен деп аталатын каталогты қайтарады.

Әдепкі домен - TEXTDOMAIN мәні. Егер каталог - бос жол ( «» ), онда bindtextdomain () берілген домен үшін ағымдық байланыстыруды қайтарады.

dcgettext ( string [ , домен [ , санат ]] )

Мәтіндік домен доменіндегі жолдың аудармасын жергілікті санат санаты үшін қайтарады. Домен үшін әдепкі мән - TEXTDOMAIN ағымдағы мәні. Санат үшін әдепкі мән - «LC_MESSAGES» .

Санат үшін мән берсеңіз, ол GAWK-да сипатталған белгілі санаттағы санаттардың біріне тең жол болуы керек: AWK тиімді бағдарламалау . Сондай-ақ, мәтіндік доменді беру керек. Ағымдағы доменді пайдаланғыңыз келсе, TEXTDOMAIN пайдаланыңыз.

dcngettext (string1 , string2 , number [ , domain [ , category ]] )

Мәтіндік домен доменіндегі string1 және string2 аудармасының санына арналған жергілікті санат санаты үшін пайдаланылатын көпше пішінді қайтарады. Домен үшін әдепкі мән - TEXTDOMAIN ағымдағы мәні. Санат үшін әдепкі мән - «LC_MESSAGES» .

Санат үшін мән берсеңіз, ол GAWK-да сипатталған белгілі санаттағы санаттардың біріне тең жол болуы керек: AWK тиімді бағдарламалау . Сондай-ақ, мәтіндік доменді беру керек. Ағымдағы доменді пайдаланғыңыз келсе, TEXTDOMAIN пайдаланыңыз.

ПАЙДАЛАНУШЫ ТАҢДАУ ФУНКЦИЯЛАРЫ

AWK-дағы функциялар мынадай:

функция атауы ( параметр тізімі ) { statements }

Функциялар олар үлгілерде немесе әрекеттерде өрнектерден шақырылғанда орындалады. Функция шақыруында берілген нақты параметрлер функцияда жарияланған ресми параметрлерді құрастыру үшін пайдаланылады. Массивдер сілтеме арқылы берілсе, басқа айнымалы мәндер бойынша беріледі.

Функциялар бастапқыда AWK тілінің бір бөлігі болмағандықтан, жергілікті айнымалылардың ережесі жеткіліксіз: олар параметр тізімінде қосымша параметрлер ретінде жарияланады. Конвенциялар жергілікті параметрлерді нақты параметрлерден параметр тізімінде қосымша кеңістіктермен бөлу болып табылады. Мысалға:

функциясы f (p, q, a, b) # a және b жергілікті {...} / abc / {...; f (1, 2); ...}

Функцияны шақырудағы сол жақшаға функцияның атын, кез келген аралас ақ кеңістіктісіз, дереу орындау керек. Бұл конкатенцирлеу операторымен синтаксистік белгісіздіктен аулақ болу. Бұл шектеу жоғарыда аталған кірістірілген функцияларға қолданылмайды.

Функциялар бір-біріне қоңырау шала алады және рекурсивті болуы мүмкін. Жергілікті айнымалы ретінде пайдаланылатын функция параметрлері бос жолға инициализленеді және функцияны шақыру кезінде нөмір нөлге тең болады.

Функциядан мәнді қайтару үшін қайтару мәнін пайдаланыңыз. Қайтар- мағына болмаса, қайтар- мағына анықталмаса немесе функция'` falling off '' аяғында қайтарылса.

Егер - лингация берілсе, gawk жұмыс уақытында емес, талдау уақытында анықталмаған функцияларға қоңыраулар туралы ескертеді. Белгілі емес функцияны іске қосу кезінде шақыру - бұл қателік.

Функция сөзі функцияның орнына қолданылуы мүмкін.

ЖАҢА ФУНКЦИЯЛАРДЫҢ ДИНАМИКАЛЫҚ ЖОҚ

Gawk нұсқасының 3.1 нұсқасынан бастап, сіз іске қосылған гаук аудармашысына жаңа кіріктірілген функцияларды динамикалық түрде қосуға болады. Толық мәліметтер осы нұсқаулықтың қолданылу аясынан тыс; GAWK бөлімін қараңыз : егжей-тегжейлерге арналған тиімді АВК бағдарламалау .

кеңейтім ( нысан , функция )

Нысанмен аталатын ортақ нысан файлын динамикалық түрде байланыстырады және инициализацияны орындау үшін сол нысандағы функцияны шақырады. Олар жолдар ретінде ұсынылуы керек. Қайтар- мағынаны атқаратын қызметіммен қайтарады.

Бұл функция GAWK-да ұсынылған және құжатталған : Тиімді AWK бағдарламалауы , бірақ бұл мүмкіндік туралы бәрі келесі шығарылымда өзгеруі ықтимал. Біз бұл мүмкіндікті сіз қайта жасамағыңыз келмейтін кез келген нәрсеге пайдаланбауға кеңес береміз.

СИГНАЛДАР

pgawk екі сигналды қабылдайды. SIGUSR1 профильді және функционалды шақыру стекасын awkprof.out немесе профильді файлмен бірге аталатын профиль файлына тастайды . Содан кейін іске қосылады. SIGHUP оны профильдік және функционалды қоңырау стакасын тастайды және одан кейін шығып кетеді.

МЫСАЛДАР

Барлық пайдаланушылардың логин аттарын басып шығару және сұрыптау: BEGIN {FS = «:»} {print $ 1 | «sort»} Файлдағы сызықтарды санау: {nlines ++} END {print nlines} Әр жолды файлдағы нөмірінен алдын ала көріңіз: {print FNR, $ 0} Біріктіріп және жолдың нөмірі (тақырыбындағы өзгеріс): {print NR, $ 0}

Ішкі

Жолдың тұрақты мәндері қос тырнақшаға салынған таңбалар тізбегі. Ағылшын тілінде сөйлемейтін ортада AWK бағдарламасындағы жолдарды табиғи табиғи тілге аударуды талап ете алады. Мұндай жолдар AWK бағдарламасында алдыңғы астын сызылған (`` `') белгіленеді. Мысалға,

gawk 'BEGIN {басып «hello, world»}'

әрдайым сәлем, әлем шығарады. Бірақ,

gawk 'BEGIN {Басып шығару _ «hello, world»}'

Францияда bonjour, monde басып шығаруы мүмкін.

Жергілікті AWK бағдарламасын жасау мен іске қосуда бірнеше қадамдар бар.

1.

Мәтіндік доменді бағдарламамен байланыстырылған атауға орнату үшін TEXTDOMAIN айнымалы мәніне тағайындау үшін BEGIN әрекетін қосыңыз.


BEGIN {TEXTDOMAIN = «myprog»}

Бұл бағдарламаңызбен байланыстырылған .mo файлын табу үшін gawk- ге рұқсат береді. Бұл қадамсыз гаук хабарлар мәтіндік доменін пайдаланады, ол, мүмкін, сіздің бағдарламаңызға аудармаларды қамтымайды.

2.

Бас астын сызып алуы керек барлық жолдарды белгілеңіз.

3.

Қажет болса, бағдарламаңыздағы dcgettext () және / немесе bindtextdomain () функцияларын пайдаланыңыз.

4.

Бағдарламаға арналған .po файлын жасау үшін gawk --gen-po -f myprog.awk> myprog.po файлын іске қосыңыз.

5.

Сәйкес аудармаларды қамтамасыз етіңіз және сәйкес .mo файлын құрыңыз және орнатыңыз.

Интернационалдандыру ерекшеліктері GAWK- да толық сипатталған : тиімді AWK бағдарламалауы .

Posix үйлесімділігі

Gawk үшін басты мақсат - POSIX стандартымен, сондай-ақ UNIX awk- ның соңғы нұсқасымен үйлесімдігі. Осы мақсатта gawk AWK кітабында сипатталмаған, awl-нің Bell Laboratories нұсқасының бір бөлігі болып табылатын және POSIX стандартында орналасқан төмендегі пайдаланушыға көрінетін функцияларды қамтиды.

Кітапта, awk әйтпесе дәлелді BEGIN блогы орындалғаннан кейін файл ретінде ашатын болса, команда жолының ауыспалы тағайындалуы орын алады. Дегенмен, бұрынғы іске асыру кезінде мұндай тапсырма кез келген файл атауларының алдында пайда болғанда, тапсырма BEGIN блогы іске қосылмастан бұрын орындалады. Бағдарламалар осы «` функциясына »тәуелді болды. ' Awk ' құжаттамаға сәйкестендіру үшін өзгергенде, бағдарламаның орындалуы бұрынғы әрекетке байланысты қосымшаларды орналастыру үшін айнымалыларды тағайындау үшін -v параметрі қосылды. (Бұл мүмкіндік Bell Laboratories және GNU әзірлеушілерімен келісілді.)

Іске асырудың ерекше мүмкіндіктері -W нұсқасы POSIX стандартынан тұрады.

Аргументтерді өңдеу кезінде, gawk аргументтердің соңын сигнал беру үшін арнайы опцияны пайдаланады `` - ''. Үйлесімділік режимінде ол туралы ескертеді, бірақ басқаша анықталмаған параметрлерді елемейді. Қалыпты жұмыс барысында мұндай дәлелдер AWK бағдарламасына өңделеді.

AWK кітабы srand () мәнін анықтайды. POSIX стандарты кездейсоқ сандар тізбегін қадағалауға мүмкіндік беру үшін пайдаланылған ұрықты қайтарады. Сондықтан gawk-да srand () өзінің ағымдағы тұқымын қайтарады.

Басқа жаңа мүмкіндіктер: Көптеген опцияларды пайдалану (MKS awk-дан ); ENVIRON массиві; \ A және \ v шығу сценарийлері (бастапқыда gawk-де жасалған және Bell Laboratory нұсқасына кері қайтарылған); tolower () және toupper () кірістірілген функциялар (Bell Laboratuar нұсқасынан); және ANCI C конвертациясының ерекшеліктері printf-де (Bell Laboratories нұсқасында бірінші орында).

Тарихи ерекшеліктері

Гавк қолдайтын тарихи AWK-дің екі ерекшелігі бар. Біріншіден, ұзындықты () кіріктірілген функцияны дәлел жоқ кезде ғана емес, жақшаларсыз да шақыруға болады! Осылайша,

a = ұзындығы # Holy Algol 60, Batman!

екеуінің де бірдей

a = ұзындығы ()
a = ұзындығы ($ 0)

Бұл мүмкіндік POSIX стандартында '' deprecated '' деп белгіленеді және gawk , егер --lint пәрмен жолында көрсетілген болса, оны пайдалану туралы ескертеді.

Басқа ерекшелік - организмнен тыс үзінділерді жалғастыру немесе үзіліссіз пайдалану , цикл немесе цикл жасау. Дәстүрлі АЖК-ны қолдану келесі нұсқаға балама ретінде қолданылды. Gawk бұл қолданысқа қолдау көрсетсе, - дәстүрлі түрде көрсетіледі.

GNU кеңейтімдері

Gawk POSIX awk- ге бірнеше кеңейтімді ие. Олар осы бөлімде сипатталған. Мұнда сипатталған барлық кеңейтімдерді - дәстүрлі опциямен гавка шақыру арқылы өшіруге болады.

POSIX awk жүйесінде гауктің келесі ерекшеліктері жоқ.

*

-f- опциясы арқылы аталған файлдарға жол іздеу орындалмайды. Сондықтан AWKPATH ортасының айнымалысы ерекше емес.

*

\ X қашу кезектілігі. (Өшірілген - posix ).

*

Fflush () функциясы. (Өшірілген - posix ).

*

Кейінгі сызықтарды жалғастыру мүмкіндігі . және :. (Өшірілген - posix ).

*

AWK бағдарламаларында сопылық және он алтылықты тұрақты.

*

ARGIND , BINMODE , ERRNO , LINT , RT және TEXTDOMAIN айнымалылары ерекше емес.

*

IGNORECASE айнымалысы мен оның жанама әсері жоқ.

*

FIELDWIDTHS айнымалысы және тіркелген енін өрістету .

*

PROCINFO массиві қол жетімді емес.

*

РС- ды тұрақты өрнекте пайдалану.

*

I / O қайта бағыттау үшін арнайы файл атаулары танылмайды.

*

Бірлескен процестерді жасау үшін | & операторы.

*

Бос жолды FS мәні ретінде жекелеген таңбаларды бөлу мүмкіндігі және бөлу үшін үшінші аргумент ретінде () .

*

Close () функциясына қосымша екінші дәлел.

*

Матч () функциясына қосымша үшінші дәлел.

*

Positional спецификаторларын printf және sprintf () көмегімен қолдану мүмкіндігі.

*

Жиымның барлық мазмұндарын жою үшін жою массивін пайдалану.

*

Ағымдағы кіріс файлын өңдеуден бас тарту үшін келесі файлды пайдалану.

*

Strictime () , strtonum () , systime () , () , астропласт () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () немесе () () және xor () функциялары.

*

Ауыстырылатын жолдар.

*

Кеңейтім () функциясымен жаңа орнатылған функцияларды динамикалық қосу.

AWK кітабы close () функциясының қайтару мәнін анықтамайды. Gawk 's close () функциясы демалыс файлын немесе құбырды жабу кезінде, fclose (3) немесе pclose (3) мәндерін қайтарады. Кіріс құбырын жабу кезінде процестің шығу күйін қайтарады. Қайтар- мағынасы қайтар- мағына - егер аталған файл, труба немесе бірлескен процесс қайта жіберілмесе.

Gawk - дәстүрлі опциямен шақырылған кезде, -F параметріне fs дәлелі `` t`` болса, онда FS қойынды таңбасына орнатылады. Назар аударыңыз, gawk -F \ t ... жазуы тек қана қабықты'` t 'деп келтіреді және « -Т» опциясына өтпейді. Өйткені, бұл әдеттен тыс ерекше жағдай, әдепкі мінез-құлық емес. Бұл мінез-ақ егер --posix көрсетілсе, пайда болмайды. Өріс бөлгіші ретінде табуляция сипатын шынымен алу үшін, жалғыз тырнақшаларды пайдаланыңыз: gawk -F '\ t' ....

Lsp , execl , fdisk , auths , talk , mot , free , lpr , execl , fdisk , rs , unix2dos , cal , fs , cd , iwpriv , at , кім , iwconfig , ifconfig , vgdisplay , ашық , lsmod , ntohs , mailq , kill , wtmp