Linux komandiyasini o'rganing - gawk

Ism

gawk - naqshni skanerlash va qayta ishlash tili

Sinopsis

gawk [POSIX yoki GNU uslubi variantlari] -f dastur-fayli [ - ] fayl ...
gawk [POSIX yoki GNU uslubi imkoniyatlari] [ - ] dastur-matn fayli ...

pgawk [POSIX yoki GNU uslubi variantlari] -f dastur fayllari [ - ] fayl ...
pgawk [POSIX yoki GNU uslubi imkoniyatlari] [ - ] dastur-matn fayli ...

Ta'rif

Gawk AWK dasturlash tilini GNU loyihasining amalga oshirilishi. Bu POSIX 1003.2 Komuta Tillari va Vositalari Standartidagi tilning ta'rifiga mos keladi. Ushbu versiya o'z navbatida The AWK Programming Language , Aho, Kernighan va Weinberger tomonidan, UNIX awk tizim V Release 4 versiyasida mavjud bo'lgan qo'shimcha funktsiyalar bilan tavsiflanadi. Gawk shuningdek, yaqinda Bell Laboratories awk kengaytmalari va qator GNU-ga asoslangan kengaytmalarni taqdim etadi.

Pgawk - gawkning profillash versiyasi. Dasturlar sekinroq ishlaydi va avtomatik ravishda bajarilganida awkprof.out faylida ijro profilini ishlab chiqaradi, faqatgina gawk- ga har xil bo'ladi. Quyida - profil parametriga qarang.

Buyruqlar chizig'i o'z-o'zidan gaplashadigan variantlardan iborat, AWK dasturining matnini ( -f yoki --file imkoniyatlari bilan ta'minlanmagan bo'lsa) va ARGC va ARGV-da oldindan belgilangan AWK o'zgaruvchilarida mavjud bo'lgan qiymatlardan iborat.

Varian-r formati

Gawk imkoniyatlari an'anaviy POSIX harflari variantlari yoki GNU uslubidagi uzoq variantlar bo'lishi mumkin. POSIX imkoniyatlari bitta `` `` bilan boshlanadi, uzoq variantlar `` `` bilan boshlanadi. GNUga xos xususiyatlar va POSIX-mandatli xususiyatlar uchun uzoq variantlar taqdim etiladi.

POSIX standartidan so'ng, gawk-o'ziga xos variantlar -W parametrlariga argumentlar orqali beriladi. Bir nechta -V variantlari berilishi mumkin. Har bir variantni -W parametrlari quyida batafsil aytib o'tilganidek, mos keladigan uzoq variantga ega. Uzoq variantlarga asoslangan argumentlar yoki variant bilan = = belgisi bilan qo'shilib, bo'sh joylarsiz yoki keyingi buyruq qatori argumentida berilishi mumkin. Qisqa klavishalar noyob bo'lib qolguncha uzoq variantlar qisqartirilishi mumkin.

Tanlovlar

Gawk quyidagi variantlarni qabul qiladi, alifbo tartibida.

-F fs

- maydonni ajratuvchi fs Kirish maydonini ajratuvchi fs uchun ( FS oldindan belgilangan o'zgaruvchining qiymati) fs dan foydalaning .

-v var = val

--assign var = val Dasturning bajarilishidan oldin val qiymati o'zgaruvchiga tayinlang. Bunday o'zgaruvchan qiymatlar AWK dasturining BEGIN blokida mavjud.

-f- dastur fayli

Dastur faylini AWK dastur manbaini birinchi buyruq qatori argumentining o'rniga fayl dastur-faylidan o'qing. Multiple -f (yoki -file ) variantlari mavjud.

-mf NNN

-mr NNN NNN qiymatiga turli xotira chegaralarini belgilang. F belgisi maksimal hajmdagi maydonlarni belgilaydi va r bayrog'i maksimal yozuv hajmini belgilaydi. Ushbu ikkita bayroq va -m variantni Bell Laboratories tomonidan UNIX awk ning tadqiqot versiyasidir. Ular gawk tomonidan e'tiborsizlik qilinadi, chunki gawkning oldindan belgilangan chegaralari yo'q.

-U uyda

- An'anaviy

- Compat

- Uyg'unlik rejimida an'anaviy ishga tushirish. Uyg'unlik rejimida gawk UNIX awk bilan bir xil ishlaydi ; GNUga xos kengaytmalarning hech biri tan olinmagan. Ushbu opsiyaning boshqa shakllariga nisbatan an'anaviy foydalanish afzallik beriladi. Qo'shimcha ma'lumot uchun quyidagi GNU EXTENSIONS bo'limiga qarang.

- Nusxa ko'chirish

Mualliflik huquqi

- copy

--Mualliflik huquqi GNU mualliflik huquqi to'g'risidagi ma'lumotning qisqa versiyasini standart chiqishda chop eting va muvaffaqiyatli chiqing.

-toplama o'zgaruvchilari [ = fayl ]

- o'zgaruvchining o'zgaruvchilari [ = fayli ] Birlamchi o'zgaruvchining saralangan ro'yxatini, ularning turlari va yakuniy qiymatlarini faylga yozing . Hech qanday fayl taqdim etilmagan bo'lsa, gawk joriy katalogda awkvars.out nomli fayldan foydalanadi.

Barcha umumjahon o'zgaruvchilar ro'yxatini o'z ichiga olgan holda, dasturlarda matn terish xatosini izlashning yaxshi usuli hisoblanadi. Agar sizda juda ko'p funktsiyasi bo'lgan katta dasturga ega bo'lsangiz, ushbu parametrdan foydalanasiz va sizning funktsiyalaringiz mahalliy bo'lishingizni xohlagan global o'zgaruvchilarni noto'g'ri foydalanmasligingizga ishonch hosil qilishni xohlaysiz. (Bu i , j va shunga o'xshash oddiy o'zgaruvchan ismlar bilan bajarish juda oson xatodir.)

- yordam bering

-V foydalanish

--Yordam bering

--Sayt standart chiqishi bo'yicha mavjud variantlarning nisbatan qisqa sarlavhasini chop eting . ( GNU kodlash standartlari bo'yicha , bu variantlar darhol, muvaffaqiyatli chiqishga sabab bo'ladi.)

-W lint [ = fatal ]

--lint [ = fatal ] Boshqa WKK dasturlarida shubhali yoki boshqa narsalarga ega bo'lmagan konstruktsiyalar haqida ogohlantirishlar. O'lgan tanaffuslardan farqli o'laroq , lint-ogohlantirishlar muhim xatoliklarga aylanadi. Bu qattiq bo'lishi mumkin, ammo uni ishlatish, toza AWK dasturlarini rivojlantirishga yordam beradi.

- Qichishgan

- lint-old Unix awk- ning original versiyasiga ko'chirilmaydigan qurilmalar haqida ogohlantirishlarni taqdim eting.

-W gen-po

--gen-po AWK dasturini skanerlash va tahlil qilish va dasturning barcha lokalizable strings uchun yozuvlar bilan standart chiqishda GNU .po formati faylini yaratish. Dasturning o'zi bajarilmaydi. .po fayllari haqida qo'shimcha ma'lumot olish uchun GNU gettext taqsimotiga qarang.

-Kotiksiz ma'lumotlar

- no-decimal-ma'lumotlar Kirish ma'lumotlarida sakkizinchi va o'n oltinchi qiymatlarni aniqlang . Ushbu parametrdan ehtiyotkorlik bilan foydalaning!

-W posix

--posix Quyidagi qo'shimcha cheklovlar bilan muvofiqligi rejimini yoqadi:

*

\ X qochish suhbatlari tan olinmagan.

*

FS faqat bo'sh joyga o'rnatilganda, faqat bo'sh joy va yorliq maydonni ajratuvchi sifatida harakat qiladi, yangi qator yo'q.

*

Keyin qatorlarni davom ettira olmaysizmi ? va : .

*

Kalit so'z vazifasi uchun sinonim funktsiyasi tan olinmagan.

*

Operatorlar ** va ** = ^ va ^ = joylarida mavjud emas.

*

Fflush () funktsiyasi mavjud emas.

-W profil [ = prof_file ]

--profile [ = prof_file ] profil ma'lumotlarini prof_file- ga yuboring . Asl qiymati: awkprof.out . Gawk bilan ishlayotganda, profil faqatgina "bosilgan" dastur hisoblanadi. Pgawk bilan ishlaganda , profil har bir foydalanuvchi tomonidan belgilangan funksiyaning chap chegarasida va funktsiya chaqiruvi sonidagi dasturdagi har bir so'rovning bajarilgan sonini o'z ichiga oladi.

- qayta interval

- intervalli Muntazam ifodalashda intervalli ifodalarni ishlatishni yoqing (quyida muntazam ifodalar bo'limiga qarang). Intervalli ifodalar an'anaviy ravishda AWK tilida mavjud emas edi. POSIX standarti ularni awk va egrepni bir-biriga moslashtirish uchun ularni qo'shdi. Biroq, ulardan foydalanish eski AWK dasturlarini buzishi ehtimoldan yiroq, shuning uchun gawk faqatgina ushbu variant bilan so'ralganda yoki posix belgilaganida ularni ta'minlaydi .

- Vaqtli dastur-matn

- dasturiy ta'minot dasturiy matni AWK dastur manba kodi sifatida dastur- metoddan foydalaning. Ushbu parametr buyruq satriga kiritilgan manba kodi bilan kutubxona vazifalarini ( f-f va - fayl parametrlari orqali) oson tarzda birlashtirilishiga imkon beradi. Bu, asosan, qobiq skriptlarida ishlatiladigan o'rta va katta AWK dasturlari uchun mo'ljallangan.

-V versiyasi

--Davsiya standart chiqindagi gawkning ushbu nusxasi uchun versiya ma'lumotini chop eting . Bu, asosan, sistemangizdagi gawning nusxasi bepul dasturiy ta'minot fondi tarqatadigan narsalarga nisbatan dolzarbligini bilish uchun foydalidir. Bu xato haqida xabar berishda ham foydalidir. ( GNU kodlash standartlari bo'yicha , bu variantlar darhol, muvaffaqiyatli chiqishga sabab bo'ladi.)

- Variantlarning oxirigacha signal. Bu AWK dasturining o'zidan `` `` bilan boshlash uchun ko'proq argumentlarni kiritish uchun foydalidir. Bu asosan ko'pchilik boshqa POSIX dasturlari tomonidan ishlatiladigan konventsiyani ajralib chiqadigan dalillarga mos kelish.

Muvofiqlik rejimida boshqa variantlar yaroqsiz deb bayrok, lekin aks holda e'tiborsiz qilinadi. Oddiy amaliyotda, dasturiy ta'minot matni berilgan ekan, noma'lum variantlar ARGV majmuasida qayta ishlash uchun AWK dasturiga o'tkaziladi. Bu, ayniqsa, AWK dasturlarini `` # '' amalga oshiriladigan tarjimon mexanizmi orqali amalga oshirish uchun foydalidir.

AWK DASTUR YAPILMASI

AWK dasturi naqsh tushunchalari ketma-ketligi va ixtiyoriy funktsiyalarning ta'riflaridan iborat.

naqsh { aksiya so'zlari }

funktsiya nomi ( parametr ro'yxati ) { statements }

Gawk avval dasturning dastur manbasini ko'rsatgan bo'lsa, dastur manbasini argumentlardan argumentga yoki buyruqlar satrida birinchi variantdan mustaqil o'zgaruvchiga o'qiydi . -f va --source parametrlari buyruq satrida bir necha marta ishlatilishi mumkin. Gawk dastur matnini barcha dastur fayllari va buyruqlar satri matnlari birlashtirilganidek o'qiydi. Bu AWK funktsiyalari kutubxonalarini yaratish uchun foydalidir, ularni ishlatadigan har bir yangi AWK dasturiga kiritmasdan turib. Bundan tashqari, kutubxona vazifalarini buyruq qatorlari dasturlari bilan aralashtirish imkoniyatini beradi.

AWKPATH muhit o'zgaruvchisi, -f parametr bilan atalgan manba fayllarini topishda foydalanish uchun qidiruv yo'lini belgilaydi. Ushbu o'zgaruvchi mavjud bo'lmasa, asl qiymati ".: / Usr / local / share / awk" dir . (Asl papkada qanday qilib gawk qurilishi va o'rnatilganligiga bog'liq ravishda farq bo'lishi mumkin). -f parametriga berilgan fayl nomini `` / '' belgisi bo'lsa, hech qanday yo'l qidirish amalga oshirilmaydi.

Gawk AWK dasturlarini quyidagi tartibda amalga oshiradi. Birinchidan, -v parametrida ko'rsatilgan barcha o'zgaruvchan belgilashlar bajariladi. Keyinchalik, gawk dasturni ichki shaklga oladi. So'ngra, gawk BEGIN bloklari (mavjud bo'lsa) kodini bajaradi va keyin ARGV qatoridagi har bir faylni o'qishni davom ettiradi. Buyruqlar satriga nom berilgan fayllar bo'lmasa, gawk standart kirishni o'qiydi.

Buyruqlar satrida fayl nomi var = val shaklida bo'lsa, u o'zgaruvchan tayinlash sifatida ko'rib chiqiladi. Argumentlar var qiymati qiymatiga tayinlanadi. Har qanday BEGIN bloklari ishga tushirilgandan so'ng sodir bo'ladi. Buyruqning chiziqli o'zgaruvchan belgilari AWK maydonlarni va yozuvlarga qanday kirilganligini nazorat qilish uchun foydalanadigan o'zgaruvchiga dinamik ravishda tayinlash uchun foydalidir. Bundan tashqari, bitta ma'lumot faylida bir nechta o'tishni talab qilsa, davlatni nazorat qilish uchun foydalidir.

Agar ARGVning ma'lum bir elementining qiymati bo'sh bo'lsa ( "" ), gawk uning ustidan o'tib ketadi.

Kirishdagi har bir yozuv uchun GAWK testi AWK dasturidagi biron bir naqshga mos keladimi- yo'qligini tekshiradi. Yozuvga mos keladigan har bir naqsh uchun tegishli harakat amalga oshiriladi. Naqshlar dasturda yuzaga keladigan tartibda sinovdan o'tkaziladi.

Nihoyat, barcha kirish tugaganidan so'ng, gawk END blok (lar) ichidagi kodni bajaradi (agar mavjud bo'lsa).

Argumentlar, yozuvlar va maydonlar

AWK o'zgaruvchilari dinamik; ular birinchi marta foydalanilganda paydo bo'ladi. Ularning qadriyatlari yoki qaymoqli nuqta yoki satr yoki ikkalasi ham ulardan qanday foydalanilganiga bog'liq. AWK da bir o'lchovli massivlarga ega; Ko'p o'lchamli qatorlar simulyatsiya qilinishi mumkin. Bir qator oldindan belgilangan o'zgaruvchilar dastur ishga tushirilganda o'rnatiladi; bular zarur deb ta'riflanadi va quyida umumlashtiriladi.

Yozuvlar

Odatda, qaydlar yangi qator belgilar bilan ajralib turadi. Yozuvlarni ichki o'zgaruvchan RSga qiymatlarni belgilash bilan qanday ajratish mumkinligini nazorat qilishingiz mumkin. Agar RS biron-bir belgi bo'lsa, u belgi yozuvlarni ajratadi. Aks holda, RS oddiy ifodadir. Ushbu oddiy iboraga mos keladigan matndagi yozuv yozuvni ajratadi. Biroq, moslik rejimida, yozuvlarni ajratish uchun faqat mag'lubiyatga qiymatining birinchi belgisi ishlatiladi. Agar RS null satrga o'rnatilsa, yozuvlar bo'sh satrlar bilan ajralib turadi. RS bo'sh satrga o'rnatilganda, yangi satr belgi har doim FS qiymatiga ega bo'lishga qo'shimcha ravishda maydonni ajratuvchi vazifasini bajaradi.

Maydonlar

Har bir kirish yozuvi o'qilganligi sababli, gawk maydonni ajratuvchi sifatida FS o'zgaruvchining qiymatidan foydalanib, maydonlarni rekord qo'yadi. FS bitta belgi bo'lsa, joylar ushbu belgi bilan ajratiladi. Agar FS bo'sh satr bo'lsa, har bir alohida belgi alohida maydonga aylanadi. Aks holda, FS to'liq muntazam ifoda bo'lishi kutilmoqda. FSning yagona bo'shliq bo'lgan maxsus holatda joylar bo'shliqlar va / yoki ichki oynalar va / yoki yangi satrlarni ajratib turadi. (Lekin pastda - posixning muhokamasini ko'ring). QAYD: IGNORECASE ning qiymati (pastroqqa qarang) shuningdek FS muntazam ifodalangan joylarning qanday bo'lishiga ta'sir qiladi va RSning muntazam ifodasi bo'lsa, qaydlar qanday ajratiladi.

FIELDWIDTHS o'zgaruvchisi raqamlar ajratilgan raqamlar ro'yxatiga o'rnatilsa, har bir maydonning sobit kengligi bo'lishi kutiladi va gawk belgilangan kengliklardan foydalanib qaydni yuqoriga yoyadi . FS qiymatlari e'tibordan chetda. FSga yangi qiymat tayinlash FIELDWIDTHSdan foydalanishni bekor qiladi va odatdagi xatti-harakatlarini tiklaydi.

Kirish yozuvlaridagi har bir maydon o'z joylashuvi, $ 1 , $ 2 va boshqalar bilan mos kelishi mumkin. $ 0 - bu butun yozuv. Maydonchalarga doimiy ravishda murojaat qilish kerak emas:

n = 5
$ n nusha oling

kiritish yozuvida beshinchi maydonni bosib chiqaradi.

NF o'zgaruvchisi, asosiy yozuvlardagi maydonlarning umumiy soniga o'rnatiladi.

Mavjud bo'lmagan maydonlarga (masalan, $ NF dan keyin olingan maydonlar) null-string hosil qiladi. Shu bilan birga, mavjud bo'lmagan maydonga tayinlash (masalan, $ (NF + 2) = 5 ) NF qiymatini oshiradi, null magistral bilan ularning qiymatlari sifatida har qanday aralashadigan maydonlarni hosil qiladi va $ 0 qiymatini qayta hisoblash uchun keltiradi. maydonlar OFS qiymatidan ajratilgan. Salbiy sanab berilgan maydonlar zikrnomalari o'ta murakkab xatolarga olib keladi. UF qiymatini kamaytirish yangi qiymatlarni yo'qotish uchun maydonlarning qiymatlarini va qiymatlari OFS qiymatlari bilan ajratilgan holda qayta hisoblash uchun $ 0 qiymatini tashkil etadi.

Mavjud maydonga qiymat belgilash butun $ 0 yozuviga murojaat qilinganda barcha yozuvni qayta tiklashga sabab bo'ladi. Xuddi shu tarzda, $ 0 ga teng qiymatni belgilash, yozuvlar maydonlarni yangi qiymatlar yaratish uchun rekplit bo'lishiga sabab bo'ladi.

Ichki o'zgaruvchilar

Gawk ning joylashgan o'zgaruvchilar quyidagilardir:

ARGK

Buyruqlar satrining argumentlari soni ( gawk uchun variantlar yoki dastur manbasini o'z ichiga olmaydi).

ARGIND

Joriy faylning ARGVdagi indekslari qayta ishlanadi.

ARGV

Buyruqlar satri argumentlarining qatori. Array 0dan ARGC - 1 ga indekslanadi. ARGV tarkibiy qismini dinamik ravishda o'zgartirish ma'lumot uchun ishlatiladigan fayllarni boshqarishi mumkin.

BINMODE

POSIX bo'lmagan tizimlarda barcha fayllarni kiritish uchun "ikkilik" rejimini qo'llaydi. 1, 2 yoki 3 raqamli qiymatlari, kirish fayllari, chiqdi fayllari yoki barcha fayllar o'zaro g / Ç foydalanish kerakligini belgilaydi. "R" yoki "w " ning string qiymatlari, kirish fayllari yoki chiqdi fayllari mos ravishda ikkitomonlama I / U dan foydalanishi kerakligini belgilaydi. "Rw" yoki "wr" ning string qiymatlari barcha fayllar ikkilik g / s dan foydalanishi kerakligini bildiradi. Boshqa har qanday mag'lubiyat qiymati "rw" sifatida ko'rib chiqiladi, lekin ogohlantirish xati hosil qiladi.

CONVFMT

Raqamlar uchun "% .6g" raqamini o'tkazish formati sukut bo'yicha.

ENVIRON

Joriy muhit qiymatlarini o'z ichiga olgan qator. Array muhit o'zgaruvchilar tomonidan indekslanadi, har bir element bu o'zgaruvchining qiymati (masalan, ENVIRON ["HOME"] / home / arnold bo'lishi mumkin). Ushbu qatorni o'zgartirishni qayta yo'naltirish yoki tizim () funktsiyasi orqali ochish uchun mo'ljallangan dasturlarga ta'sir qiladigan muhit ta'sir qilmaydi.

ERRNO

Agar tizim xatosi yoki getline uchun o'qish paytida, yoki get () paytida yopish () paytida ERRNO xatoni tavsiflovchi satrni o'z ichiga oladi. Bu qiymat ingliz tilidan tashqari tillarda tarjima qilinishi kerak.

YO'Q

Oq-kosmosdagi maydon kengliklarining ajratilgan ro'yxati. Joylashtirilganda, gawk maydonni ajratuvchi sifatida FS o'zgaruvchining qiymatidan foydalanish o'rniga kiritilgan kenglikdagi maydonlarga kirishni ajratadi.

FAYL NOMI

Joriy kirish fayli nomi. Buyruqning satrida hech qanday fayl ko'rsatilmagan bo'lsa, FILENAME qiymati `` - '' dir. Biroq, FILENAME BEGIN blokining ichida aniqlanmagan (agar getline bilan o'rnatilmagan bo'lsa).

FNR

Joriy kirish faylidagi kirish yozuvi raqami.

FS

Kirish maydonini ajratuvchi, sukut bo'yicha bo'sh joy. Yuqoridagi Maydonlarni ko'ring.

IGNORECASE

Barcha muntazam ifoda va mag'lubiyat operatsiyalarining katta-kichikligini nazorat qiladi. Agar IGNORECASE nol bo'lmagan qiymatga ega bo'lsa, unda taqqoslash va qoidalar bilan taqqoslash, FS bilan maydonni ajratish, RS bilan ajralib turish, ~ va ! Bilan muntazam ifoda qilish va gensub () , gsub () , index () , mos () , split () va sub () funktsiyalari muntazam ifodalarni bajarishda vaziyatni e'tiborsiz qoldiradi. QAYD: Array subscribing ta'sir qilmaydi, va asort () funktsiyasi.

Shunday qilib, agar IGNORECASE nolga teng bo'lmasa / aB / "ab" , "aB" , "Ab" va "AB" satrlariga mos keladi. Barcha AWK o'zgaruvchilarida bo'lgani kabi, IGNORECASE ning boshlang'ich qiymati nolga teng, shuning uchun barcha muntazam ifoda va mag'lubiyat operatsiyalari odatda katta-kichikligi sezgir. Unix-da, ISO 8859-1 lotin-1 belgilar majmui ishni e'tiborsiz qoldirganda ishlatiladi.

LINT

AWK dasturidan - lint variantini dinamik boshqarish imkonini beradi. Qachon haqiqat, gawk tuklar ogohlantirishlarni yozishga undadi. Yolg'on gapirganda, u yo'q. " Yo'qolgan " mag'lubiyat qiymati tayinlanganida, lint-ogohlantirishlar, --lint = fatal kabi muhim xatoliklarga aylanadi. Boshqa haqiqiy qiymat faqat ogohlantirishlarni yozishga imkon beradi.

UF

Joriy kiritish yozuvidagi maydonlar soni.

NR

Hozirgi kunga qadar ko'rilgan yozuvlar umumiy soni.

OFMT

Raqamlar uchun chiqish formati, "% .6g" , sukut bo'yicha.

OFS

Chiqish maydonini ajratuvchi, sukut bo'yicha bo'sh joy.

ORS

Chiqib ketgan yozuvni ajratuvchi, sukut bo'yicha yangi satr.

PROCINFO

Ushbu qator elementlari ishlaydigan AWK dasturi haqida ma'lumot olish imkonini beradi. Ba'zi tizimlarda tartibda elementlar bo'lishi mumkin, "group1" ning " n n " guruhi orqali n , bu jarayonning qo'shimcha guruhlari soni. Ushbu elementlarni sinash uchun operatordan foydalaning. Quyidagi elementlar mavjud bo'lishi kafolatlanadi:

PROCINFO ["egid"]

getegid (2) tizim chaqiruvining qiymati.

PROCINFO ["euid"]

geteuid (2) tizim chaqiruvining qiymati.

PROCINFO ["FS"]

"FS" FS bilan maydonni ajratish yoki "FIELDWIDTHS" FIELDWIDTHS bilan maydonni ajratish uchun amal qilsa.

PROCINFO ["gid"]

(2) tizim chaqiruvining qiymati.

PROCINFO ["pgrpid"]

Joriy jarayonning jarayon guruhi identifikatori.

PROCINFO ["pid"]

Joriy jarayonning jarayon identifikatori.

PROCINFO ["ppid"]

joriy jarayonning yuqori protsess identifikatori.

PROCINFO ["uid"]

(2) tizim chaqiruvining qiymati.

RS

Kirish yozuvlarini ajratuvchi, sukut bo'yicha yangi satr.

RT

Yozuvning yakunlovchi qismi. Gawk RT tomonidan belgilangan belgiga yoki muntazam ifodasini mos keluvchi kirish matniga o'rnatadi.

RSTART

Birinchi belgi ko'rsatkichi () bilan mos keladi; 0 bo'lmasa. (Bu belgilar indekslarini birdan boshlashini bildiradi.)

RLENGTH

String () bilan mos keladigan magistral uzunligi; Hech qanday mos kelmasa -1.

SUBSEP

Bir qator subkriptlarni qator elementlarida ajratish uchun ishlatiladigan belgi, "\ 034" sukut bo'yicha.

TEXTDOMAIN

AWK dasturining matn maydoni; Dasturning satrlari uchun mahalliylashtirilgan tarjimalarni topish uchun foydalaniladi.

Arrays

Jadvallar kvadrat qavslar ( [ va ] ) o'rtasida ifoda etilgan. Ifoda ifodasi ifodasi ro'yxati ( expr , expr ...) bo'lsa, undagi qator indeks SUBSEP o'zgaruvchining qiymati bilan ajratilgan har bir ifodani (string) qiymatining birlashtirilishini o'z ichiga olgan mag'lubiyatdir. Ushbu ob'ekt ko'p o'lchamli massivlarni taqsimlash uchun ishlatiladi. Masalan:

i = "A"; j = "B"; k = "S"
x [i, j, k] = "salom, dunyo \ n"

"A \ 034B \ 034C" qatori bilan indekslangan qator x ga "salom, dunyo \ n" satrini belgilaydi . AWKdagi barcha qatorlar birlashtiruvchi, ya'ni string qiymatlari bilan indekslanadi.

Maxsus operator , bir qatorda yoki ma'lum bir qiymatdan iborat katalog mavjudmi yoki yo'qligini ko'rish uchun ishlatilishi mumkin.

agar (qatorda val) bosma qator [val]

Agar qatorda bir nechta altsepts bo'lsa, qatorda (i, j) foydalaning.

Ushbu inshoot, shuningdek, bir qatorda barcha elementlarni yineleme uchun bir pastadir uchun ham ishlatilishi mumkin.

O'chirish iborasini ishlatib, elementlardan bir qator o'chirilishi mumkin. Olib tashlash iborasi, shuningdek, qatorning tarkibini o'chirib tashlash uchun ham foydalanilishi mumkin.

Argumentlar kiritish va ishlab chiqarish

Argumentlar va maydonlar (suzuvchi nuqta) raqamlar yoki simlar yoki har ikkisi bo'lishi mumkin. O'zgaruvchining qiymatini sharhlash uning kontekstiga bog'liq. Agar soni ifodada ishlatilsa, u string sifatida ishlatiladi, agar u mag'lubiyat sifatida ko'rib chiqiladigan bo'lsa, u raqam sifatida ko'rib chiqiladi.

Bir o'zgaruvchining raqam sifatida qarashini majburlash uchun unga 0 qo'shing; uni mag'lubiyatga aylantirishga majbur qilish, uni bo'sh satr bilan birlashtirish.

Agar mag'lubiyatga raqamga aylantirilsa, konvertatsiya strtod (3) yordamida amalga oshiriladi. Raqamlar sprintf (3) uchun argument sifatida o'zgarmaydiganning soni qiymatiga ega bo'lgan formatlash usuli sifatida CONVFMT qiymatini foydalanib, mag'lubiyatga aylantiriladi. Biroq, AWKdagi barcha raqamlar suzuvchi nuqta bo'lsa-da, integral qiymatlar doimo butun sonlar sifatida aylanadi. Shunday qilib, berilgan

CONVFMT = "% 2.2f" a = 12 b = a ""

o'zgarmaydigan b "12" ning mag'lubiyatga ega emas, "12.00" emas.

Gawk taqqoslashni quyidagicha amalga oshiradi: Agar ikkita parametr soni bo'lsa, ular soni bilan solishtiriladi. Agar bitta qiymat soni bo'lsa va ikkinchisiga '`soni qator' deb nom berilgan mag'lubiyatga qiymati bo'lsa, unda taqqoslashlar soni ham bajariladi. Aks holda, ularning soni qiymat mag'lubiyatga aylanadi va mag'lubiyatga taqqoslash amalga oshiriladi. Ikkita satr, albatta, chiziqlar sifatida taqqoslanadi. POSIX standarti "sobit simlar" uchun ham, hamma joyda "raqamli sim" tushunchasini amal qiladi. Biroq, bu noto'g'ri va gawk buni qilmaydi. (Yaxshiyamki, bu standartning keyingi versiyasida o'rnatiladi.)

Eslatib o'tamiz, "57" kabi magistral sobit soni simlar emas , ular magistral sobitdir. '' Soni string '' intellekti faqat maydonlar, getline usuli, FILENAME , ARGV elementlari, ENVIRON elementlari va split () yordamida yaratilgan qator elementlari uchun ishlatiladi. Asosiy fikr shundan iboratki, foydalanuvchi kiritishi va raqamli ko'rinadigan faqat foydalanuvchi kiritish shu tarzda ishlashi kerak.

Uninitialized o'zgaruvchilar soni qiymati 0 va string qiymati "" (null yoki empty, string) mavjud.

O'nta va o'n oltinchi sonli sobit

GAWK ning 3.1-versiyasidan boshlab siz AWK dastur manba kodingizdan C-uslubidagi sakkizinchi va o'n oltinchidan sobit turlardan foydalanishingiz mumkin. Masalan, 011 sektsiyali qiymat kasr 9ga teng, va onaltılık qiymat 0x11 kasr 17 ga teng.

String sobit

AWK da string sobitlari ikkita tirnoq ( " ) o'rtasida qo'shiladigan belgilarning ketma-ketligi bo'lib, ular qatorida C kabi bo'lgani kabi ba'zi qochqinlar ketma-ketligi tan olinadi.

\\

A litosfera terslik.

\ A

"Alert" belgisi; odatda ASCII BEL belgisi.

\ b

orqaga.

\ f

form-feed.

\ n

yangi qator.

\ r

arava qaytarish.

\ t

gorizontal yorliq.

\ V.

vertikal yorliq.

\ X belgisi

Belgilangan belgidan keyingi o'n oltinchi sonli satr. ANSICda bo'lgani kabi, barcha keyingi o'n oltinchi raqamlar qochish tartibining bir qismi hisoblanadi. (Bu funktsiya bizni qo'mita tomonidan tilni loyihalashga oid bir narsani tushuntirishi kerak). Masalan, "\ x1B" ASCIIESC (qochish) belgisidir.

\ ddd

Ikkala sakkiz raqamli 1-, 2-, yoki 3-raqamli ketma-ketlikdagi belgilar. Masalan, "\ 033" ASCII ESC (qochish) belgisidir.

\ c

Oddiy belgi v .

Qochish sekanslari doimiy muntazam ifodalarda ham ishlatilishi mumkin (masalan, / [\ t \ f \ n \ r \ v] / bo'shliqlar belgilarga mos).

Muvofiqlik rejimida sakkizinchi va o'n oltinchi raqamli qochish sekanslari bilan ifodalangan belgilar, muntazam ifoda barqarorlarida ishlatilganda to'liq ifodalanadi. Shunday qilib, / a \ 52b / a \ * b / ga teng .

Namunalar va harakatlar

AWK yo'nalishlarga asoslangan tildir. Naqsh birinchi bo'lib keladi va keyin harakat. Harakatlar haqidagi fikrlar { va } da keltirilgan . Yoki naqsh bo'lmasligi mumkin, yoki harakat kam bo'lishi mumkin, lekin, albatta, har ikkala emas. Naqsh bo'lmasa, har bir kiritilgan yozuv uchun harakat amalga oshiriladi. Etishmayotgan xatti-harakatlar tengdir

{print}

barcha yozuvlarni bosib chiqaradi.

Sharhlar "#" belgisidan boshlanadi va satr oxirigacha davom etadi. Bo'sh satrlar so'zlarni ajratish uchun ishlatilishi mumkin. Odatda, bayonot yangi satr bilan tugaydi, biroq ",", { , ? , : , && yoki || . Hali tugallanadigan satrlarni yoki boshqa so'zlar ham quyidagi satrda davom ettiriladi. Boshqa hollarda, chiziqni tugatish bilan uni davom ettirish mumkin, bu holda yangi satrni e'tiborsiz qoldiradi.

Bir nechta so'zlarni bitta satrda ularni ``; 'bilan ajratib qo'yish mumkin. Bu naqsh va harakatlar jufti (odatiy hol) ning harakat qismida va naqsh aksiyasi bayonotlarida ham qo'llaniladi.

Namunalar

AWK naqshlari quyidagilardan biri bo'lishi mumkin:

BEGIN END / muntazam ifoda / relational expression pattern && naqsh naqsh || naqsh namunasi ? naqsh : naqsh ( naqsh ) ! naqsh model1 , naqsh2

BEGIN va END - ikkita maxsus naqsh turidir, ular kirishga qarshi testdan o'tkazilmaydi. Barcha BEGIN naqshlarining aksiya qismlari bir nechta BEGIN bloklarida yozilgan bo'lsa, birlashtiriladi. Ular kiritilgan har qanday ma'lumotdan oldin bajariladi. Xuddi shunday, barcha END bloklari birlashtiriladi va barcha kirish tugaganidan keyin (yoki chiqish ko'rsatmasi bajarilganda) bajariladi. BEGIN va END naqshlari naqshli ifodalarda boshqa naqshlar bilan birlashtirilishi mumkin emas. BEGIN va END naqshlarida kamchiliklar bo'lishi mumkin emas.

/ Muntazam ifoda / naqsh uchun, tegishli iboralar muntazam ifoda bilan taalukli har bir kirish yozuvi uchun bajariladi. Muntazam ifodalar egrep (1) da bir xil va quyida umumlashtiriladi.

İlişkisel ifoda , quyidagi harakatlar haqida bobda belgilangan operatorlarning har birini foydalanishi mumkin. Ular, odatda, ma'lum joylar muayyan muntazam ifodalarga mos kelish-bo'lmasligini tekshiradi

&& , || , va ! operatorlar mantiqiy va mantiqiy YoKI va mantiqiy YO'Q, S kabi. Qisqa davriy baholash, shuningdek, S da bo'lgani kabi, ko'proq ibtidoiy namunaviy iboralarni birlashtirish uchun ishlatiladi. Ko'p tillarda bo'lgani kabi, baholash tartibini o'zgartirish uchun Qavslar ishlatilishi mumkin.

?? Operatori Cda bir xil operatorga o'xshaydi. Birinchi naqsh to'g'ri bo'lsa, test uchun ishlatiladigan naqsh ikkinchi naqsh bo'lsa, aks holda u uchinchi bo'ladi. Ikkinchi va uchinchi naqshlardan faqat bittasi baholanadi.

Chizma1 , ifodani Pattern2 shakli intervalli naqsh deb ataladi. Pattern1 ga mos keladigan yozuv bilan boshlangan va naqsh 2ga mos keladigan rekordga qadar davom etadigan barcha yozuvlar bilan mos keladi . Bu boshqa naqsh ifodasi bilan birlashtirilmaydi.

Muntazam iboralar

Muntazam ifodalar egrepda topilgan keng tarqalgan tur. Ular quyidagi belgilardan tashkil topgan:

v

metasarachalar bo'lmaganlarga mos keladi v .

\ c

literal belgilar bilan mos keladi v .

.

yangi qatorni o'z ichiga olgan har qanday belgiga mos keladi.

^

mag'lubiyat boshlanishiga mos keladi.

$

mag'lubiyatning oxiriga mos keladi.

[ abc ... ]

belgilar ro'yxati abc belgilaridan biriga mos keladi ....

[^ abc ... ]

bekor qilingan belgilar ro'yxati, abc tashqari har qanday belgi bilan mos keladi ....

r1 | r2

o'zgarishi: r1 yoki r2 ga mos keladi .

r1r2

birlashma: r1 va r2 ga mos keladi .

r +

bir yoki bir nechta r bilan mos keladi .

r *

nol yoki undan ortiq r bilan eşleşir.

r

nol yoki bir r bilan eşleşir.

( r )

guruhlash: r .

r { n }

r { n ,}

r { n , m } Qavslar ichidagi bitta yoki ikkita raqam oraliq ifodani bildiradi . Qavslar ichida bitta raqam bo'lsa, oldingi muntazam ifoda r n marta takrorlanadi. Agar vergul bilan ajratilgan ikkita raqam mavjud bo'lsa, u r marta n marta takrorlanadi. Agar bitta raqam va keyin vergul bo'lsa, u holda kamida n marta takrorlanadi.

Intervalli ifodalar faqat --posix yoki --re-interval buyruq satrida ko'rsatilganda mavjud.

\ y

bo'sh so'zni so'zning boshida yoki oxirida mos keladi.

\ B

so'z ichidagi bo'sh satrga mos keladi.

\ <

so'zning boshida bo'sh satr bilan mos keladi.

\>

so'z oxirida bo'sh mag'lub bilan mos keladi.

\ W

har qanday so'z tarkibiy belgiga (harf, raqam yoki pastki chiziq) mos keladi.

\ Vt

so'z tarkibiy bo'lmagan har qanday belgi bilan mos keladi.

\ `

buferning boshidagi bo'sh mag'lub bilan mos keladi.

\ '

tampon oxiridagi bo'sh mag'lub bilan mos keladi.

Jadvallarning doimiy qiymatida amal qiluvchi qochish suhbatlari (quyida ko'rib) muntazam ifodalarda ham amal qiladi.

Belgilar sinflari POSIX standartida kiritilgan yangi xususiyatdir. Belgilar sinf - bu o'ziga xos xususiyatga ega bo'lgan belgilar ro'yxatini tavsiflash uchun maxsus belgi, ammo haqiqiy belgilarning o'zlari mamlakatdan mamlakatga va / yoki belgilar majmui belgilar majmuasiga qarab farq qilishi mumkin. Misol uchun, AQShda va Frantsiyada alifbo xarakterga ega tushunchalar farqlanadi.

Bir belgi klassi faqat belgi ro'yxatidagi kataklar ichidagi muntazam ifodada amal qiladi. Belgilar sinflari [: , sinfni ifodalovchi kalit so'z, va :] dan iborat . POSIX standarti tomonidan belgilangan belgilar sinflari:

[: alnum:]

Alfa-raqamli belgilar.

[: alfa:]

Alifbo belgilar.

[: bo'sh:]

Space yoki yorliq belgilar.

[: cntrl:]

Boshqarish belgilar.

[: raqam:]

Raqamli belgilar.

[: grafik:]

Bosma va ko'rinadigan belgilar. (A bo'sh joy bosib chiqarish mumkin, ammo ko'rinmasa, ikkovi ham birdir.)

[: pastki:]

Quyi alifbo belgilar.

[: chop etish:]

Yoziladigan belgilar (belgilar bo'lmagan belgilar.)

[: punkt:]

Tinish belgilar (harf bo'lmagan belgilar, raqamlar, nazorat belgilar yoki bo'sh joy belgilar).

[: bo'shliq:]

Kosmik belgilar (masalan, bo'sh joy, yorliq va formfeed kabi bir nechta ism).

[: yuqori:]

Yuqori harfli alifbo belgilar.

[: xdigit:]

Onaltılık sonlar bo'lgan belgilar.

Misol uchun, POSIX standartidan oldingi alfasayısal belgilarga mos kelish uchun siz / [A-Za-z0-9] / ni yozish kerak edi. Agar sizning belgilar majmui boshqa alfavit belgilarga ega bo'lsa, bu sizning ularga mos kelmaydi va sizning belgilaringiz ASCIIdan farqli ravishda ajralib tursa, bu ASCII alfasayısal belgilarga mos kelmasligi mumkin. POSIX belgilar sinflari bilan / [[: alnum:]] / yozing va bu sizning belgilar majmuasidagi alfavitik va raqamli belgilarga mos keladi.

Belgilar ro'yxatlarida ikkita qo'shimcha maxsus ketma-ketlik paydo bo'lishi mumkin. Ular bir nechta belgilar bilan ifodalangan yagona belgilar ( birlashtiruvchi elementlar deb ataladigan) va birlashtirilishi yoki saralanishi uchun mos keladigan bir nechta belgilar bo'lishi mumkin bo'lmagan ASCII bo'lmagan belgilar majmui uchun qo'llaniladi. (Misol uchun, frantsuz tilida, "e" va "qabr" harflari e ga teng).

Belgilar bilan to'qnashish

Birlashtiruvchi simvol [. va .] . Misol uchun, agar ch birlashtiruvchi element bo'lsa, [[.ch.]] Bu biriktiruvchi elementga mos keladigan muntazam ifodadir, [ch] esa c yoki h bilan mos keladigan muntazam ifodadir.

Ekvivalentlik kurslari

Ekvivalentlik klassi munosib belgilar ro'yxati uchun mahalliyka xos nomdir. Ism [= va =] ga kiritilgan . Misol uchun, "e", "e", "" va "` e "kabi barcha nomlarni ifodalash uchun ishlatilishi mumkin. Bunday holatda [[= e =]] e , e ' yoki e ning har qandayga mos keladi .

Bu xususiyatlar ingliz tilida bo'lmagan tillarda juda qadrlidir. Kutubxona gawk muntazam ekspluatatsiya qilish uchun foydalanadigan vazifani bajaradi, ayni paytda faqat POSIX belgilar sinflarini tan oladi; ular belgilar yoki ekvivalentlik sinflarini bilishmaydi.

\ Y , \ B , \ < , \> , \ w , \ W , \ va \ operatorlari gawk uchun maxsus; ular GNU muntazam ifodalangan kutubxonalaridagi obyektlarga asoslangan kengaytmalardir.

Har xil buyruq qatorlari imkoniyatlari gawk harflarning muntazam ifodalarda qanday talqin qilinishini nazorat qiladi.

Variantlar yo'q

Odatiy holatda, gawk yuqorida tavsiflangan POSIX muntazam ifodalarni va GNU muntazam ekspluatatsiya operatorlarini ta'minlaydi. Biroq, intervalli so'zlar qo'llab-quvvatlanmaydi.

- posix

Faqat POSIX muntazam so'zlar qo'llab-quvvatlanadi, GNU operatorlari maxsus emas. (Masalan, \ w w} literal w bilan mos keladi. Intervalli so'zlar ruxsat etiladi.

- an'anaviy

An'anaviy Unix awk muntazam so'zlar mos tushadi. GNU operatorlari maxsus emas, intervalli ifodalar mavjud emas va POSIX belgilar sinflari ( [[: alnum:]] va boshqalar) mavjud emas. O'n sakkiz va o'n oltinchi raqamli qochish sekanslari tomonidan ta'riflangan harflar, odatiy ifodalash metafaraktlarini ifodalasa ham, ularni to'liq ifodalashadi.

- interval

Muntazam iboralardagi intervalli ifodalarga ruxsat berish - an'anaviy bo'lsa ham.

Amallar

Harakatlar haqidagi fikrlar { va } brauzerlarda berilgan. Harakatlar bayonnomalari ko'p tillarda topilgan odatiy topshiriq, shartli va pastadir so'zlaridan iborat. Operatorlar, boshqarish nazorati va mavjud bo'lgan kirish / chiqish ko'rsatmalari S

Operatorlar

AWK operatorlari, ustunligini kamaytirish maqsadida

( ... )

Guruhlash

$

Joylar bo'yicha ma'lumot.

++ -

Ortiqcha va kamaytirish, ham prefiks, ham postfiks.

^

Darhaqiqat ( ** shuningdek, foydalanish operatori uchun ham foydalanilishi mumkin).

+ -!

Unary plus, unary minus va mantiqiy rad etish.

* /%

Ko'paytirish, bo'linish va modul.

+ -

Qo'shish va olib tashlash.

joy

Satrlarni birlashtirish.

<>

<=> =

Muntazam aloqador operatorlar.

~! ~

Muntazam ifodalash mosligi, noqonuniy o'yin. QAYD: ~ yoki . ~ Ning chap tomonida doimo muntazam ifodani ishlatmang ( / foo / ). Faqat o'ng tomondan foydalaning. / Foo / ~ exp ifodasi xuddi shunday ma'noga ega (($ 0 ~ / foo /) ~ exp ) . Bu, odatda nima maqsadda qilinayotgani emas .

ichida

Array a'zo.

&&

Mantiqiy AND.

| |

Mantiqiy OR.

?:

C shartli ifoda. Bu formada expr1 mavjudmi ? expr2 : expr3 . Expr1 rost bo'lsa, ifoda qiymati expr2 , aks holda u expr3 hisoblanadi . Faqat expr2 va expr3 biri hisoblanadi.

= + = - =

* = / =% = ^ = Tayinlangan. Mutlaq topshiriq ( var = qiymat ) va operator-belgilash (boshqa shakllar) qo'llab-quvvatlanadi.

Boshqarish jadvallari

Boshqarish jadvallari quyidagicha:

if ( vaziyat ) iborasi [ else ifodasi ] while ( condition ) ifodani bajarish uchun ( shart ) for ( expr1 ; expr2 ; expr3 ) izohlar }

I / U bayonnomalari

Kirish / chiqish so'zlari quyidagicha:

yopish ( fayl [ , qanday ] )

Fayllarni, quvurlarni yoki birgalikda ishlov berishni yoping. Majburiy emas, faqat ikki tomonlama quvurning bir uchini birlashgan jarayonga qanday qilib yopish kerak. Bu " yoki " dan " yoki " dan bittagina qiymat bo'lishi kerak.

getline

Keyingi kirish yozuvidan $ 0 ni belgilang; NF , NR , FNR ni belgilash .

getline < fayl

Faylning keyingi yozuvidan $ 0 ni tanlang ; NF ni o'rnatish.

getline bor

Varni keyingi kirish yozuvidan sozlash; NR , FNR ni tanlang .

getline bor < fayl

Var- ni faylning keyingi ro'yxatidan tanlang .

buyruq getline [ bor ]

Qo'mondon buyruqni chiqish yoki chiqish qiymati $ 0 yoki var , yuqorida ko'rsatilgan tarzda.

buyruq | & getline [ bor ]

Buyruqni chiqish jarayoni $ 0 yoki var , yoki yuqorida ko'rsatilgan kabi qo'shma jarayon sifatida ishga tushirish. Birgalikda ishlaydigan jarayonlar gawk kengaytmasi hisoblanadi.

Keyingi

Joriy kirish yozuvini qayta ishlashni to'xtatish. Keyingi kirish yozuvi o'qiladi va AWK dasturidagi birinchi naqsh bilan ishlash boshlanadi. Agar kirish ma'lumotlarining oxiri topilgan bo'lsa, agar mavjud bo'lsa, END blok (lar).

Keyingi fayl

Joriy kirish faylini qayta ishlashni to'xtatish. Keyingi kirish yozuvi keyingi kirish faylidan keltirilgan. FILENAME va ARGIND yangilanadi, FNR 1 ga qayta tiklanadi va AWK dasturidagi birinchi naqsh bilan ishlash boshlanadi. Agar kirish ma'lumotlarining oxiri topilgan bo'lsa, agar mavjud bo'lsa, END blok (lar).

chop eting

Joriy yozuvni yozishga undadi. Chiqish yozuvi ORS o'zgaruvchining qiymati bilan yakunlanadi.

bosib chiqarish ro'yxati

So'zlarni yozadi. Har bir ifoda qiymati OFS o'zgaruvchining qiymati bilan ajralib turadi. Chiqish yozuvi ORS o'zgaruvchining qiymati bilan yakunlanadi.

bosib chiqarish ro'yxati > faylni yozing

Fayllarni ifodalaydi. Har bir ifoda qiymati OFS o'zgaruvchining qiymati bilan ajralib turadi. Chiqish yozuvi ORS o'zgaruvchining qiymati bilan yakunlanadi.

printf fmt, expr-ro'yxat

Formatlash va chop etish.

printf fmt, expr-list > faylini tanlang

Faylni formatlash va chop etish.

tizim ( cmd-liniya )

Buyruqning cmd- buyrug'ini bajaring va exit holatini qaytaring. (Bu POSIX bo'lmagan tizimlarda mavjud bo'lmasligi mumkin.)

fflush ( [ fayl ] )

Ochiq chiqdi fayli yoki trubka fayli bilan bog'liq bo'lgan har qanday buferlarni yuving. Agar fayl etishmayotgan bo'lsa, standart chiqish bo'shlanadi. Fayl bo'sh satr bo'lsa, barcha ochiq-oydin chiqdi fayllari va trubkalari o'z tamponlarini tozalashadi.

Bosma va printf uchun qo'shimcha chiqish yo'nalishlarga ruxsat beriladi.

bosing ... >> faylini tanlang

faylga chiqadi .

bosib ... | buyruq

quvur ustida yozadi.

bosib chiqarish ... | & buyruq

ma'lumotlarni birgalikda ishlashga yuboradi.

Getline buyrug'i faylning oxirida 0 va xatolikda -1 qaytaradi. Xatoda ERRNO muammoni tasvirlaydigan satrni o'z ichiga oladi.

QAYD: Agar trubani yoki birgalikda ishlashni " getline " yoki "loop" da chop etish yoki printfdan foydalansangiz, buyruqning yangi nusxalarini yaratish uchun yaqin () funktsiyasidan foydalaning. AWK avtomatik ravishda quvurlarni yoki EOF-ni qaytarsa ​​birgalikda ishlash jarayonlarini yopmaydi.

Printf bayonoti

Printf ifodasi va sprintf () funktsiyasining AWK versiyalari (quyida ko'rib chiqing) quyidagi konvertatsiya qilishning maxsus formatlarini qabul qiladi:

% s

ASCII belgisi. % C uchun ishlatiladigan dalillar soni bo'lsa, u belgi sifatida ko'rib chiqiladi va chop etiladi. Aks holda, dalillar, bir mag'lubiyatga deb qabul qilinadi va shu mag'lubiyatga faqat birinchi belgi yazdırılır.

% d , % i

O'nli raqam (integer qismi).

% ga,% E

Shakli [-] d.dddddde [+ -] dd shaklidagi suzuvchi nuqta raqami. % E formati e o'rniga E ni ishlatadi.

% f

Shakli [-] ddd.dddddd suzuvchi nuqta raqami.

% g,% G

% E yoki % f konvertatsiyasidan foydalaning, qaysi biri qisqa bo'lsa, aniq bo'lmagan nolga ega. % G formatida % e o'rniga % E ishlatiladi .

% o

Imzosi bo'lmagan sakkizinchi raqam (shuningdek, tamsayı).

% u Belgilangan kasr son (yana bir tamsayı).

% s

Belgilar qatori.

% x,% X

Belgilangan o'n oltinchi raqam (to'liq son). % X formatida ABCDEF abcdef o'rniga foydalaniladi.

%%

% Bitta belgi; hech qanday dalil aylantirilmagan.

Majburiy emas, qo'shimcha parametrlar % va nazorat qilish harflari orasida bo'lishi mumkin:

$ hisoblash

Formatlashda ushbu nuqtada hisoblashning argumentini ishlating. Bunga pozitsial splittir deb ataladi va birinchi navbatda AWK dasturining asl matnida emas, balki formatlash satrlarining tarjima qilingan versiyalarida foydalanish uchun mo'ljallangan. Bu gawk kengaytmasi.

-

Bu iborani o'z sohasi bo'ylab oqlash kerak.

joy

Raqamli konvertatsiya qilish uchun, bo'sh joyga ega bo'lgan musbat qiymatlar va minus belgisi bo'lgan salbiy qadriyatlar.

+

Kenglik o'zgartirgichidan oldin ishlatiladigan ortiqcha belgisi (pastga qar.), Formatlash kerakli ma'lumotlar ijobiy bo'lsa ham, har doim raqamli aylanishlar uchun bir belgi berishni aytadi. + Kosmik o'zgartirishni bekor qiladi.

#

Muayyan nazorat harflari uchun `` muqobil shakl '' dan foydalaning. % O uchun , yetakchi nolni yetkazing. % X va % X uchun nolga teng bo'lmagan natija uchun etakchi 0x yoki 0Xni yetkazing . % Ga , % E va % f uchun natija har doim kasr nuqtasini o'z ichiga oladi. % G va % G uchun keyingi nollar natijadan o'chirilmaydi.

0

Etakchi 0 (nol) bayroq vazifasini bajaradi, shuning uchun chiqish bo'shliqlar o'rniga nol bilan to'ldirilishi kerakligini bildiradi. Bu raqamli bo'lmagan chiqish formatlariga ham to'g'ri keladi. Bu bayroq faqat maydon kengligi bosib chiqariladigan qiymatdan kengroq bo'lganida ta'sir ko'rsatadi.

kengligi

Maydon bu kenglikka to'ldirilishi kerak. Er odatda bo'shliqlar bilan to'ldiriladi. 0 bayrog'i ishlatilgan bo'lsa, u nol bilan to'ldiriladi.

. oldingi

Bosib chiqarishda ishlatiladigan aniqlikni bildiruvchi raqam. % E , % E va % f formatlari uchun bu siz o'nli kasr nuqtasining o'ng tarafiga yozib qo'yiladigan raqamlar sonini bildiradi. % G va % G formatlari uchun muhim raqamlarning maksimal sonini bildiradi. % D , % u , % i , % u , % x va % X formatlari uchun chop etish uchun eng kam sonli raqamni bildiradi. % S uchun , chop etilishi kerak bo'lgan belgining maksimal sonini bildiradi.

ANSI C printf () protseduralarining dinamik kengligi va oldingi imkoniyatlari qo'llab-quvvatlanadi. A * yoki kenglik yoki aniq spetsifikatsiyalar o'rniga ularning qiymatlari argumentlar ro'yxatidan printf yoki sprintf () ga olib kelinadi . Dinamik kenglik yoki aniqlik bilan joylashuvga oid spektrni ishlatish uchun format stringida * sonini $ kiriting . Masalan, "% 3 $ * 2 $. * 1 $ s" .

Maxsus fayl nomlari

Ichki / qayta yo'naltirishni bosmadan yoki printf- dan faylga ko'chirishda yoki fayldan getline- dan foydalanib, gawk maxsus fayl nomlarini ichki sifatida taniydi. Ushbu fayllar, gawkning ota-jarayonidan (odatda qobiq) meros qilib olingan fayl identifikatorlarini ochish imkonini beradi. Ushbu fayl nomlari ma'lumotlar fayllarini nomlash uchun buyruq satrida ham ishlatilishi mumkin. Fayl nomlari:

/ dev / stdin

Standart kirish.

/ dev / stdout

Standart chiqish.

/ dev / stderr

Standart xato chiqishi.

/ dev / fd / n

Ochiq fayl identifikatori bilan bog'langan fayl.

Ular, ayniqsa, xato xabarlari uchun foydalidir. Masalan:

Chop etish "Siz uni portlatdingiz!" > "/ dev / stderr"

aks holda siz undan foydalanmoqchi bo'lardingiz

Chop etish "Siz uni portlatdingiz!" | "mushuklar 1> & 2"

Quyidagi maxsus fayllar TCP / IP tarmoq ulanishlarini yaratish uchun | & ko-process operatori bilan foydalanilishi mumkin.

/ inet / tcp / lport / rhost / rport

Uzoq portdagi rportdagi masofadan boshqaruvchi rastaga mahalliy portdagi lportda TCP / IP havolasi uchun fayl. Tizim portni tanlash uchun 0 portini ishlating.

/ inet / udp / lport / rhost / rport

Xuddi shunday, lekin TCP / IP o'rniga UDP / IP-dan foydalaning.

/ inet / raw / lport / rhost / rport

Kelajakda foydalanish uchun himoyalangan.

Boshqa maxsus fayllar ishlaydigan gawk jarayoniga oid ma'lumotlarga kirishni ta'minlaydi. Ushbu fayllar endi eskirgan. Ular taqdim etgan ma'lumotni olish uchun PROCINFO qatoridan foydalaning. Fayl nomlari:

/ dev / pid

Ushbu faylni o'qish, joriy jarayonning jurnali identifikatorini o'nli kasrga qaytaradi va yangi satr bilan yakunlanadi.

/ dev / ppid

Ushbu faylni o'qish, joriy jarayonning yuqori protsess identifikatorini o'nlikda qaytaradi va yangi satr bilan yakunlanadi.

/ dev / pgrpid

Ushbu faylni o'qish joriy jarayonning jarayon guruhi identifikatorini o'nli kasrga qaytaradi va yangi chiziq bilan yakunlanadi.

/ dev / foydalanuvchi

Ushbu faylni o'qish yangi satr bilan yakunlangan bitta yozuvni qaytaradi. Maydonlar bo'shliqlar bilan ajralib turadi. $ 2 - tizimning chaqiruvi (2), sistemaning chaqiruvi (2), chaqiruv (2) tizimi chaqiruvi, $ 3 - tizimning chaqiruvi (2), $ 4 - getegid (2) tizim chaqiruvi. Qo'shimcha joylar mavjud bo'lsa, ular getgroups tomonidan qaytarilgan guruh identifikatorlari (2). Ko'p guruhlar barcha tizimlarda qo'llab-quvvatlanmasligi mumkin.

Raqamli funktsiyalar

AWK quyidagi o'rnatilgan arifmetik funktsiyalarga ega:

atan2 ( y , x )

Radianlardagi y / x arktangentini qaytaradi.

cos ( expr )

Radialarda bo'lgan expr kosinosini qaytaradi.

exp ( expr )

Ustel funksiya.

int ( expr )

Bo'shliqqa qisqartiradi.

log ( expr )

Tabiiy logaritma funktsiyasi.

rand ()

0 va 1 o'rtasida tasodifiy sonni qaytaradi.

gunoh ( expr )

Radianlarda bo'lgan expr ning sinini qaytaradi.

sqrt ( expr )

Kvadrat ildiz vazifasi.

srand ( [ expr ] )

Tasodifiy sonlar generatori uchun yangi urug'lar sifatida foydalaniladi. Hech qanday ekspluatatsiya qilinmasa, kunning vaqti qo'llaniladi. Qaytish qiymati tasodifiy sonli generator uchun oldingi urug '.

String vazifalari

Gawk quyidagi ichki funktsiyalarga ega:

asort ( s [ , d ] )

Resurs qatoridagi elementlarning sonini qaytaradi. S mazmuni qiymatlarni taqqoslash uchun gawkning oddiy qoidalari bo'yicha tartiblanadi va s tartiblangan qiymatlarining indekslari 1dan boshlanadigan ketma-ket tamsaytlar bilan almashtiriladi. Agar ixtiyoriy belgilangan maqsad d belgilangan bo'lsa, u holda s avval d , va keyin d tartiblangan bo'lib, manba qatorining indekslarini o'zgarishsiz qoldiradi.

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

Muntazam ifoda r ga mos keladigan maqsadli t tilini izlang. H - g yoki G bilan boshlangan mag'lub bo'lsa, undagi barcha r ni s bilan almashtiring. Aks holda, h - r-ning qaysi matni o'rnini ko'rsatadigan raqam. Agar t berilmasa, uning o'rniga $ 0 ishlatiladi. O'zgartirish matnlar s navbati bilan \ n , bu erda n - 1 dan 9 gacha bo'lgan raqamlar, faqatgina n'inci parantezlenmiş pastki tushunchaga mos keladigan matnni ko'rsatish uchun ishlatilishi mumkin. Vazifasi \ 0 belgilari va belgini bajaruvchi kabi mos keladigan barcha matnni aks ettiradi. Sub () va gsub () dan farqli o'laroq, o'zgartirilgan mag'lubiyat funktsiyaning natijasi sifatida qaytariladi va asl maqsad dizayni o'zgarmaydi.

gsub ( r , s [ , t ] )

Har bir substring, string t ning oddiy ifodasiga mos keladi, simni o'zgartiradi va almashtirish sonini qaytaradi. Agar t berilmasa, $ 0 dan foydalaning. O'zgartirish matni va aslida mos keladigan matn bilan almashtiriladi. Bir harfni olish uchun \ & foydalaning. ( GAWK: pastki () , gsub () va gensub ()) ning yangi matni uchun & qoidalari va qoidalarini batafsilroq muhokama qilish uchun samarali AWK dasturlashni ko'ring.)

indeks ( s , t )

String t ning indeksini indeksida qaytaradi, yoki t bo'lmasa 0 ni beradi. (Bu belgilar indekslarini birdan boshlashini bildiradi.)

uzunlik ( [ s ] )

Agar s berilmasa , string s ning uzunligini yoki $ 0 uzunligini qaytaradi .

o'yin ( s , r [ , a ] )

R ning oddiy ifodasi ro'y beradigan joyni qaytaradi, yoki r bo'lmasa 0 va RSTART va RLENGTH qiymatlarini belgilaydi . Argumentlar buyrug'i ~ operator: strelka bilan bir xil ekanligini unutmang. Agar massiv a berilsa, a o'chiriladi va keyin elementlar 1dan n gacha r ichida parantez qilingan subexpressga mos keladigan s qismlari bilan to'ldiriladi. A ning 0-elementi barcha muntazam ifoda r bilan mos keladigan qismni o'z ichiga oladi.

ajratish ( s , a [ , r ] )

Jarayonni tartibli ifoda bo'yicha r qatoriga aylantiradi va maydonlarning sonini qaytaradi. Agar r yo'q bo'lsa, uning o'rniga FS ishlatiladi. A birinchi qator o'chiriladi. Bo'linish yuqorida tavsiflangan maydonlarni ajratish bilan bir xil bo'ladi.

sprintf ( fmt , expr-list )

Fmt bo'yicha eksp-listlarni yozib olib , natijada paydo bo'ladigan magistrni qaytaradi.

strtonum ( str )

Str ni tekshiradi va uning soniy qiymatini qaytaradi. Agar str 0 boshlanadigan bo'lsa, strtonum () str strumning sakkizinchi son ekanligini bildiradi. Agar str etakchi 0x yoki 0X bilan boshlangan bo'lsa, strtonum () str strum () ning hexadecimal number ekanligini ta'kidlaydi.

pastki ( r , s [ , t ] )

Xuddi gsub () kabi, lekin faqat birinchi muvofiq substring almashtiriladi.

substr ( s , i [ , n ] )

I- dan boshlanadigan ko'p sonli n- katakcha substringini qaytaradi. Agar n bo'lmasa, qolgan qismlar ishlatiladi.

tolower ( str )

Str str- ning bir nusxasini qaytaradi, str-da joylashgan barcha katta harflar mos keladigan kichik harflar bilan tarjima qilinadi. Alfavit bo'lmagan belgilar o'zgarmadi.

toupper ( str )

Qatorning barcha pastki harflarini mos keladigan yuqori qismli o'xshashlarga tarjima qilib, string str- ning bir nusxasini qaytaradi. Alfavit bo'lmagan belgilar o'zgarmadi.

Vaqt vazifalari

AWK dasturlarining asosiy maqsadlaridan biri, vaqt tamg'asi ma'lumotlarini o'z ichiga olgan log fayllarni qayta ishlashdan boshlab, gawk vaqt markalarini olish va ularni formatlash uchun quyidagi vazifalarni bajaradi.

mktime ( tarihpec )

Sistime () tomonidan qaytib kelgan bir xil shaklga tegishli vaqt tamg'asini kiriting. Xamiralar YYYY MM DD HH MM SS [DST] shaklining bir qatoridir . Yuzning mazmuni quyidagilardan iborat bo'lgan olti yoki etti raqamni, jumladan, asrni, 1-dan 12-gacha, oyning kunini 1-dan 31-gacha, kunning soatini 0 dan 23 gacha, daqiqani 0 dan 59, ikkinchisi 0 dan 60 gacha va ixtiyoriy quyosh nuri bilan ishlaydigan bayroq. Ushbu raqamlar qiymatlari belgilangan oraliqlar doirasida bo'lmasligi kerak; Masalan, -1 soatlik soat yarim soatdan bir soat oldin. Ilgari-nol grigoriy kalendariga, oldingi yil 0-dan va yil oldingi yil -1 dan 0 ga ko'ra, qabul qilinadi. Vaqt mahalliy vaqt zonasida bo'ladi. Kun nuri saqlash bayrog'i ijobiy bo'lsa, vaqt quyoshdan foydalanish vaqti deb hisoblanadi; agar nol bo'lsa, vaqt standart vaqt deb hisoblanadi; va salbiy (asl qiymati) bo'lsa, mktime () quyoshdan foydalanish vaqti belgilangan vaqt uchun kuchga kirganligini aniqlashga urinadi. Agar xurmo pekida etarlicha elementlar bo'lmasa yoki natijalar oralig'i chegaralanmagan bo'lsa, mktime () funksiyasi -1 qaytadi.

strftime ( [ format [ , vaqt tamg'asi ]] )

Vaqt damgasini formatga mos ravishda belgilaydi . Vaqt tamg'asi systime () tomonidan qaytarilgan shakldagi bo'lishi kerak. Vaqt tamg'asi yo'q bo'lganda, joriy vaqtni ishlatiladi. Agar format etishmayotgan bo'lsa, sana (1) ga mos keladigan standart format ishlatiladi. ANSI C ning strftime () funktsiyasi uchun mavjudligi kafolatlangan formatni o'zgartirish uchun spetsifikatsiyani ko'ring. " Strftime" ning ommaviy-domen versiyasi (3) va uning uchun man sahifasi gawk bilan keladi; agar ushbu versiya gawkni yaratish uchun ishlatilgan bo'lsa, unda u odam sahifasida tasvirlangan barcha o'zgarishlar gawk uchun mavjud .

systime ()

Epochdan (1970-01-01 00:00:00 UTC) POSIX tizimlaridan boshlab, kunning joriy vaqtini soniya sonini qaytaradi.

Bitni manipulyatsiya vazifalari

Gawk ning 3.1-versiyasidan boshlab, quyidagi bitlarni manipulyatsiya funktsiyalari mavjud. Ikkala aniqlikdagi suzuvchi nuqta qiymatlarini imzolangan uzun tamsaytlarga aylantirib, operatsiyani amalga oshirib, natijani suzuvchi nuqtaga aylantirish orqali ishlaydi. Funktsiyalar:

va ( v1 , v2 )

V1 va v2 tomonidan taqdim etilgan qiymatlarning bitini va qiymatini qaytaring.

kompl ( val )

Valning bitni qo'shimcha qismini qaytaring.

lshift ( val , son )

VAR qiymatini qaytarib, chap bittadan taymer bilan kaydırın .

yoki ( v1 , v2 )

V1 va v2 tomonidan taqdim etilgan qiymatlar bit qiymatiga YoKI.

rshift ( val , son )

Val sonini qaytarib, o'ng sonli bitlar bilan kaydırılır.

xor ( v1 , v2 )

V1 va v2 tomonidan taqdim etilgan qiymatlar bitdan XORni qaytaring.

Xalqaro vazifalar

Gawkning 3.1-versiyasidan boshlab, AWK dasturidan ish vaqtida satrlarni tarjima qilish uchun quyidagi funktsiyalardan foydalanish mumkin. To'liq tafsilotlar uchun qarang GAWK: Effektiv AWK dasturlash .

bindtextdomain ( katalog [ , domen ] )

Gawk ".mo" fayllari "standart" joylarga (masalan, sinov vaqtida) joylashtirilmasligi yoki joylashtirilmasligi kerak bo'lgan katalogni bildiradi. Domenning " ` bound 'deb nomlangan katalogini qaytaradi.

Standart domen TEXTDOMAIN qiymatidir . Agar katalog null satr ( "" ) bo'lsa, unda bindtextdomain () berilgan domen uchun joriy ulanishni qaytaradi.

dcgettext ( string [ , domen [ , toifa ]] )

Mahalliy toifadagi kategoriya uchun matn domeni domenida mag'lubiyat tarjimasini qaytaradi. Domen uchun standart qiymat TEXTDOMAIN ning joriy qiymati. Kategoriyadagi standart qiymat "LC_MESSAGES" dir .

Agar siz kategoriya uchun qiymatni taqdim qilsangiz, u GAWK da tasvirlangan taniqli mahalliy toifalarga to'g'ri keladigan string bo'lishi kerak : Effektiv AWK dasturlash . Bundan tashqari, matn domenini ta'minlashingiz kerak. Joriy domendan foydalanmoqchi bo'lsangiz, TEXTDOMAINdan foydalaning.

dcngettext ( string1 , string2 , raqam [ , domen [ , toifa ]] )

String1 va string2 matn domeni domenida mahalliy turkum kategoriyasiga tarjima soni uchun ishlatiladigan ko'plik shakli qaytaradi. Domen uchun standart qiymat TEXTDOMAIN ning joriy qiymati. Kategoriyadagi standart qiymat "LC_MESSAGES" dir .

Agar siz kategoriya uchun qiymatni taqdim qilsangiz, u GAWK da tasvirlangan taniqli mahalliy toifalarga to'g'ri keladigan string bo'lishi kerak : Effektiv AWK dasturlash . Bundan tashqari, matn domenini ta'minlashingiz kerak. Joriy domendan foydalanmoqchi bo'lsangiz, TEXTDOMAINdan foydalaning.

FOYDALANILADIGAN FOYDALANUVCHILAR

AWKdagi funktsiyalar quyidagicha belgilanadi:

funktsiya nomi ( parametr ro'yxati ) { statements }

Vazifalar ular naqsh yoki harakatlarda ifodalar ichidan chaqirilganda bajariladi. Funktsiya chaqiruvida taqdim etilgan amaldagi parametrlar funktsiyada e'lon qilingan rasmiy parametrlarni yaratish uchun ishlatiladi. Arrays mos yozuvlar bilan o'tkaziladi, boshqa o'zgaruvchilar qiymat bo'yicha o'tadi.

Funksiyalar AWK tilining bir qismi bo'lmagani uchun, mahalliy o'zgaruvchilar uchun qoidalar juda sust bo'lib, ular parametr ro'yxatida qo'shimcha parametrlar sifatida e'lon qilinadi. Konventsiya parametr ro'yxatidagi qo'shimcha parametrlar bilan mahalliy parametrlarni haqiqiy parametrlardan ajratish. Masalan:

funktsiya f (p, q, a, b) # a va b mahalliy {...} / abc / {...; f (1, 2); ...}

Funktsiya chaqiruvidagi chap burchakda, intervalda bo'sh joy bo'lmasdan, funktsiya nomini darhol kuzatish talab qilinadi. Bu birlashma operatori bilan sintaktik noaniqlikdan qochishdir. Ushbu cheklash yuqorida sanab o'tilgan ichki funktsiyalarga taalluqli emas.

Vazifalar bir-biriga qo'ng'iroq qilishlari va o'zlarini takrorlashi mumkin. Lokal o'zgaruvchilar sifatida ishlatiladigan funktsiya parametrlari null magistral bilan boshlanadi va funksiya chaqiruvi natijasida raqam nolga teng.

Funksiyadan qiymatni qaytarish uchun qaytarish expr- dan foydalaning. Hech qanday qiymat berilmagan bo'lsa, yoki funktsiyani oxirigacha «o'chirib tashlasa», qaytib kelgan qiymat aniqlanmaydi.

Agar --lint-ni taqdim etsangiz , gawk ishga tushirish vaqtida emas, aniqroq funktsiyalarni chaqiradi. Belgilangan funksiyani ishga tushirish vaqtida chaqirish - o'lik xato.

Funktsiya vazifasi funktsiyalar o'rnida ishlatilishi mumkin.

YaNGI FONKSIYONLARNI YUKLAB OLISH

Gawk ning 3.1 versiyasidan boshlab, siz gawk tarjimoniga yangi o'rnatilgan vazifalarni dinamik ravishda qo'shishingiz mumkin. To'liq tafsilotlar ushbu qo'llanmaning doirasidan tashqarida emas; GAWK- ga qarang : Tafsilotlar uchun samarali AWK dasturlash .

kengaytma ( ob'ekt , funktsiya )

Ob'ekt nomi bilan bog'langan birgalikdagi ob'ekt faylini dinamik ravishda bog'lang va ishga tushirishni bajarish uchun ushbu obyektdagi funksiyani chaqiring. Ular ikkalasi ham iplar sifatida berilishi kerak. Funksiya bilan qaytarilgan qiymatni qaytaradi.

Bu funksiya GAWK da taqdim etiladi va hujjatlashtiriladi : Effektiv AWK dasturlash , lekin bu xususiyat haqidagi hamma narsa keyingi versiyada o'zgarishi mumkin. Biz ushbu xususiyatni takrorlamasligingiz mumkin bo'lgan har qanday narsa uchun ishlatmasligingizni qat'iy tavsiya qilamiz.

SIGNALS

pgawk ikkita signalni qabul qiladi. SIGUSR1 profilni va funksiya chaqirig'ini profil faylga, yoki awkprof.out yoki faylni --profile parametri bilan ataladigan dalamga tushirishga olib keladi . Keyin u ishlamoqda. SIGHUP uni profil va funktsiyalarni chaqiradi va keyin chiqadi.

MISOLLAR

Barcha foydalanuvchilarning login nomlarini yozing va tartiblang: BEGIN {FS = ":"} {$ 1 | $ 1 | "sort"} Fayldagi qatorlarni sanash: {nlines ++} END {print nlines} Har bir qatorni faylning raqamiga ko'ra oldindan belgilang: {print FNR, $ 0} Birlashtirilgan va yo'nalish raqami (mavzu bo'yicha o'zgarish): {print NR, $ 0}

Ichlashtirish

String doimiylari er-xotin tirnoq ichiga olingan belgilar ketma-ketligi. Ingliz tilida bo'lmagan muhitda AWK dasturida satrlarni tabiiy tabiiy tilga tarjima qilishni talab qiladigan tarzda belgilash mumkin. Bunday strings AWK dasturida belgilangan pastki chiziq bilan belgilanadi ("` _ ''). Masalan,

gawk "BEGIN {chop etish" salom, dunyo "} '

har doim salom, dunyo yozadi . Ammo,

gawk 'BEGIN {chop etish _ "salom, dunyo"}'

Frantsiyada bonjour, monde bosib chiqarishi mumkin.

Mahalliylashtiriladigan AWK dasturini ishlab chiqarish va boshqarish bo'yicha bir necha qadamlar mavjud.

1.

TEXTDOMAIN o'zgaruvchiga matn domenini dasturingiz bilan bog'langan nomga o'rnatish uchun qiymat tayinlash uchun BEGIN ishini qo'shing.


BEGIN {TEXTDOMAIN = "myprog"}

Bu sizning dasturingiz bilan bog'liq bo'lgan .mo faylini topish uchun gawk- ga ruxsat beradi. Ushbu qadamsiz , gawk sizning dasturingiz uchun tarjimalarni o'z ichiga olmaydigan xabarlar matnini ishlatadi.

2.

Pastki ostki chiziq bilan tarjima qilinishi kerak bo'lgan barcha satrlarni belgilang.

3.

Agar kerak bo'lsa dasturda dcgettext () va / yoki bindtextdomain () funktsiyalaridan foydalaning.

4.

Sizning dasturingiz uchun .po faylini yaratish uchun gawk -gen-po -f myprog.awk> myprog.po-ni ishga tushiring.

5.

Kerakli tarjimalarni taqdim eting va mos keluvchi .mo faylini quring va o'rnating.

Interfaollashtirish xususiyatlari GAWK da batafsil tavsiflanadi : Effektiv AWK dasturlash .

Posix moslik

Gawk uchun asosiy maqsad - POSIX standarti bilan bir qatorda UNIX awkning eng so'nggi versiyasi bilan muvofiqligi. Shu maqsadda, gawk AWK kitobida tavsiflanmagan, ammo awk laboratoriyasi versiyasining bir qismi bo'lgan va POSIX standartida joylashgan quyidagi foydalanuvchilarning ko'rinadigan xususiyatlarini o'z ichiga oladi.

Kitobda, buyruq satrini o'zgarmaydigan tayinlash awk boshqacha tarzda argumentni BEGIN blokidan so'ng fayl sifatida ochganda sodir bo'ladi. Biroq, avvalgi dasturlarda, bunday topshiriq biron bir fayl nomidan oldin paydo bo'lganida, topshiriq BEGIN bloki ishga tushirilguncha amalga oshiriladi. Ilovalar ushbu "` xususiyatiga "bog'liq edi. '' Awk '' hujjatiga mos kelish uchun o'zgartirilgan bo'lsa, eski dasturlarga mos keladigan ilovalarni o'rnatish uchun dasturni ishga tushirishdan oldin parametrlarni belgilash uchun -v opsiyasi qo'shildi. (Ushbu xususiyat Bell Laboratories va GNU ishlab chiquvchilari tomonidan qabul qilindi.)

Dasturning o'ziga xos funktsiyalari uchun -W optsiyasi POSIX standartidan.

Argumentlar ishlov berishda, gawk argumentlarni oxirigacha bildirish uchun maxsus variantni `` `- '' dan foydalanadi. Muvofiqlik rejimida u ogohlantiradi, ammo aniqlanmagan variantlarni e'tiborsiz qoldiradi. Oddiy amaliyotda, bunday argumentlarni qayta ishlash uchun AWK dasturiga o'tkaziladi.

AWK kitobi srand () ning qaytib qiymatini aniqlamaydi. POSIX standarti tasodifiy raqamlar ketma-ketligini kuzatish imkonini beradigan urug'ni qaytarib beradi. Shuning uchun govkda srand () ning joriy urug'i ham qaytariladi.

Boshqa yangi xususiyatlar quyidagilardir: bir nechta variantlardan foydalanish (MKS awk-dan ); ENVIRON qatori; \ A va \ v qochish ketma-ketliklari (aslida gawkda bajarilgan va Bell Laboratories versiyasiga qaytarilgan); tolower () va toupper () o'rnatilgan funksiyalar (Bell Laboratories versiyasidan); va printf ning ANSI C konvertatsiya qilish xususiyatlari (Bell Laboratories versiyasida avval amalga oshirilgan).

Tarixiy xususiyatlar

Gawk qo'llab-quvvatlaydigan tarixiy AWK dasturlarining ikkita xususiyati mavjud. Birinchidan, uzunligi () funktsiyasini faqat argumentlar bilan emas, balki parantezsiz chaqirish mumkin! Shunday qilib,

a = uzunlik # Muqaddas Algol 60, Botmon!

har ikkisi bilan bir xil

a = uzunligi ()
a = uzunligi ($ 0)

Bu xususiyat POSIX standartidagi '' eskirgan '' deb belgilanadi va gawk buyruq satrida - lint ko'rsatilganda uni ishlatish haqida ogohlantiradi.

Boshqa funktsiyadan esa, davomiylik yoki tanaffus haqidagi xabarlarni tananing tashqarisidan, vaqtinchalik yoki loop qilishdan foydalanish kiradi. An'anaviy AWK dasturlari bunday foydalanishni keyingi bayonotga teng deb hisoblashdi. Agar Gawk ushbu foydalanishni qo'llab-quvvatlasa, an'anaviy tarzda aniqlanadi.

GNU kengaytmalari

Gawk POSIX awk- ga bir qator kengaytmalarga ega. Ular ushbu bo'limda tasvirlanadi. Bu erda keltirilgan barcha kengaytmalar - odatiy variant bilan gawkni chaqirish orqali o'chirib qo'yilishi mumkin.

POSIX awk- da gawk ning quyidagi xususiyatlari mavjud emas.

*

-f- variantida yozilgan fayllar uchun hech qanday qidirilmoqda . Shuning uchun AWKPATH muhit o'zgaruvchisi alohida emas.

*

\ X qochish majmuasi. ( Posix bilan o'chirib qo'yilgan .)

*

Fflush () funktsiyasi. ( Posix bilan o'chirib qo'yilgan .)

*

Keyingi bosqichlarni davom ettirish qobiliyati ? va : . ( Posix bilan o'chirib qo'yilgan .)

*

AWK dasturlarida sakkizta va o'n oltinchi soni sobit.

*

ARGIND , BINMODE , ERRNO , LINT , RT va TEXTDOMAIN o'zgaruvchilari alohida emas.

*

IGNORECASE o'zgaruvchisi va uning yon ta'siri mavjud emas.

*

FIELDWIDTHS o'zgaruvchilari va qattiq kenglikli maydonlarni ajratish.

*

PROCINFO qatori mavjud emas.

*

RSni muntazam ifoda sifatida ishlatish.

*

I / U qayta yo'naltirish uchun maxsus fayl nomlari aniqlanmaydi.

*

Hamkorlik jarayoni uchun | & operator.

*

Bo'shliq belgisini FSning qiymati sifatida va () ajratish uchun uchinchi argument sifatida alohida belgilarni ajratish qobiliyati.

*

() Funksiyasiga ixtiyoriy ikkinchi dalil.

*

Match () funktsiyasiga ixtiyoriy uchinchi dalillar.

*

Printf va sprintf () bilan joylashuv ma'lumotlarini ishlatish qobiliyati.

*

Jildning barcha tarkiblarini o'chirish uchun o'chirish qatoridan foydalanish.

*

Joriy faylni qayta ishlashdan voz kechish uchun keyingi faylni ishlatish.

*

() , Strftime () , strtonum () , sistema () , aster () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () () va xor () funktsiyalarini topish mumkin.

*

Mahalliy satrlari.

*

Extension () funktsiyasi bilan yangi ichki funktsiyalarni dinamik ravishda qo'shish.

AWK kitobi close () funktsiyasining qaytish qiymatini aniqlamaydi. Gawk ning close () qiymati, fclose (3) yoki output faylini yoki trubkasini yopayotganda, (3) doplokdan qaytadi . Kirish trubkasi yopilganda jarayonning chiqish holatini qaytaradi. Qaytash bilan nom berilgan fayl, quvur yoki o'zaro ishlov jarayoni ochilmasa, qaytariladigan qiymat -1 ga teng.

Gawk - odatiy variant bilan chaqirilganda, -F parametriga fs argumenti `` t` 'bo'lsa, FS tab tabiatiga o'rnatiladi. Gawk -F \ t- ni yozing ... shunchaki qobiqni `` t`` taklif qilsa va " F" -ga "\ t" o'tmasa. Bu juda yomon odatiy hol bo'lsa-da, bu odatiy xatti-harakat emas. --Posix belgilangan bo'lsa, bu xatti-harakat ham sodir bo'lmaydi. Haqiqatdan ham maydonni ajratuvchi sifatida tab tavsifini olish uchun, bitta tirnoqlardan foydalanish kerak: gawk -F '\ t' ....

Lp , execl , fdisk , lf , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , kal , fs , cd , iwpriv , swapochka , autofs , talk , motd , iwconfig , ifconfig , vgdisplay , ochiq , lsmod , ntohs , mailq , kill , wtmp