Linux Command - gawk haqqında məlumat əldə edin

Adı

gawk - nümunə tarama və emal dili

Sinopsis

gawk [POSIX və ya GNU stil variantları] -f proqram fayl [ - ] fayl ...
gawk [POSIX və ya GNU stil variantları] [ - ] proqram mətn faylı ...

pgawk [POSIX və ya GNU stil variantları] -f proqramı fayl [ - ] fayl ...
pgawk [POSIX və ya GNU stil variantları] [ - ] proqram mətn faylı ...

Təsvir

Gawk AWK proqramlaşdırma dilinin GNU Layihəsinin həyata keçirilməsidir. POSIX 1003.2 Command Language And Utilities Standard-da dilin tərifinə uyğun gəlir. Bu versiya öz növbəsində AWK proqramlaşdırma dilində , Aho, Kernighan və Weinberger tərəfindən təsvir olunur, UNIX awk sisteminin V Release 4 versiyasında olan əlavə xüsusiyyətlər. Gawk , daha son Bell Laboratuvarları awk uzantıları və bir sıra GNU xüsusi uzantıları təmin edir.

Pgawk , gawk'ın profil quruluş versiyasıdır. Proqramların daha yavaş işləməsi istisna olmaqla, hər hansı bir şəkildə gawk üçün eyni və avtomatik olaraq həyata keçirildikdə, awkprof.out faylında bir icra profilini istehsal edir. Aşağıdakı - profil seçiminə baxın.

Komanda xətti özünü qələm etmək üçün variantlardan, AWK proqram mətnindən (əgər -f və ya - fayl variantları ilə təmin edilmirsə)ARGCARGV-də öncədən müəyyən edilmiş AWK dəyişənlərində mövcud olan dəyərlərdən ibarətdir.

Seçim Biçimi

Gawk variantları ya ənənəvi POSIX bir məktub variantları və ya GNU stil uzun variantları ola bilər. POSIX variantları bir `` `- '' ilə başlayır, uzun variant isə` `` `ilə başlanır. Uzun variantlar həm GNU xüsusi xüsusiyyətləri, həm də POSIX-mandatlı xüsusiyyətləri üçün verilir.

POSIX standartından sonra, gawk- xüsusi variantları -W variantına arqumentlər vasitəsilə verilir. Çoxlu-W variantları təmin edilə bilər Hər bir -W variantının aşağıda ətraflı şəkildə uyğun bir uzun variant var. Uzun variantlara dair arqumentlər ya bir əlamətsiz boşluq yox, ya da növbəti komanda xəttinin arqumentində verilə bilər. Uzunmüddətli variantlar qısaldılmış ola bilər, çünki abbreviaturadır.

Seçimlər

Gawk əlifba sırası ilə siyahıda aşağıdakı variantları qəbul edir.

-F fs

- sahəsi ayırıcı fs Giriş sahəsi ayırıcısı üçün fs istifadə edin ( FS əvvəlcədən təyin edilmiş dəyişənin dəyəri).

-v var = val

--assign var = val Proqramın icrası başlamazdan əvvəl val val dəyişən var təyin. Belə dəyişən dəyərlər AWK proqramının BEGIN blokuna aiddir.

Proqram proqramı

- Fayl proqramı faylı AWK proqram qaynağını, ilk komut satırı arqumentinin yerinə fayl proqramı faylından oxuyun. Multiple -f (və ya file ) variantları istifadə edilə bilər.

-mf NNN

-mr NNN NNN dəyərinə müxtəlif yaddaş məhdudiyyətlərini təyin edin. F bayrağı ən çox sayda sahəni təyin edir və r bayraq maksimum rekord ölçüsünü təyin edir. Bu iki bayraq və -m variantları UNIX awk- ın Bell Laboratories tədqiqat versiyasından. Gawk tərəfindən əvvəlcədən təyin edilmiş məhdudiyyətlər olmadığı üçün, onlar gawk tərəfindən məhəl qoymur.

-V compat

Ənənəvi

- əlbəttə

Uyğunluq rejimində ənənəvi Run. Uyğunluq rejimində, gawk UNIX awk ilə eyni davranır; GNU-lərin uzantılarının heç biri tanınmır. Bu seçimin digər formalarından ənənəvi istifadə olunur. Daha ətraflı məlumat üçün aşağıdakı GNU EXTENSIONS-a baxın.

-W copyleft

Müəllif hüquqları

- kopyala

- copyright GNU müəllif hüquqları məlumatının qısa versiyasını standart çıxışa yazdırın və uğurla çıxış edin.

-W dump-dəyişənləri [ = fayl ]

- Dump-dəyişənlər [ = file ] Qlobal dəyişənlərin sıralanan bir siyahısını, onların növləri və yekun dəyərlərini fayllara yazdırın. Heç bir fayl təmin edilmirsə , gawk , mövcud dizindəki awkvars.out adlı bir fayl istifadə edir.

Bütün qlobal dəyişənlərin siyahısını göstərmək proqramlarınızdakı yazım səhvlərini axtarmaq üçün yaxşı bir yoldur. Bir çox funksiyası olan böyük bir proqramınız varsa bu funksiyanı da istifadə edərdiniz və funksiyalarınızın lokal olmasını nəzərdə tutduğunuz qlobal dəyişənləri yanlış istifadə etmirsiniz. (Bu, i , j və s kimi sadə dəyişən adlarla etmək üçün xüsusilə asan bir səhvdir.)

-V kömək edir

-W istifadə

- yardımçı

--Səs standart çıxışda mövcud variantların nisbətən qısa bir xülasəsini çap edin. ( GNU Kodlama Standartlarına görə , bu seçimlər dərhal, uğurlu çıxışa səbəb olur.)

-W lint [ = ölümcül ]

--lint [ = ölümcül ] Digər BEA tətbiqlərinə şübhəli və ya qeyri-portativ olan konstruksiyalar haqqında xəbərdarlıqlar verin. Ölümcül , lint xəbərdarlıqlarının isteğe bağlı bir argümanı ilə ölümcül səhvlər olur. Bu ciddi ola bilər, amma onun istifadəsi, təmiz AWK proqramlarının inkişafını əlbəttə təşviq edəcəkdir.

-Yaxşıdır

- lint-köhnə Unix awk- ın orijinal versiyasına portativ olmayan konstruksiyalar haqqında xəbərdarlıqlar verin.

-W gen-po

-gen-po AWK proqramını tarayın və təhlil edin və proqramdakı bütün lokalizable strings üçün girişləri olan standart çıxışda GPU .po formatında fayl yaradın . Proqramın özü icra edilmir. .po faylları haqqında daha ətraflı məlumat üçün GNU gettext paylamasına baxın.

-W decimal olmayan məlumatlar

- doqquz-decimal-data Giriş məlumatlarında sekiz və onaltılıq dəyərləri tanıyır. Bu seçimi böyük ehtiyatla istifadə edin!

-W posix

--posix Bu, aşağıdakı əlavə məhdudiyyətlərlə uyğunluq rejimi ilə bağlıdır :

*

\ x qaçış sıraları tanınmır.

*

Yalnız sahə və sətir FS vahid məkana təyin edildikdə sahə ayırıcıları kimi hərəkət edir, yeni xətt yoxdur.

*

Sonra xətləri davam edə bilməzsiniz ?:.

*

Açar söz funksiyası üçün sinonim funksiyası tanınmır.

*

Operatorlar **** = ^^ = yerlərində istifadə edilə bilməz.

*

Fflush () funksiyası mövcud deyil.

-W profil [ = prof_file ]

--profile [ = prof_file ] prof_file üçün profil məlumatını göndərin. Varsayılan awkprof.out'dur . Gawk ilə işləyərkən , profil yalnız bir proqramın "olduqca çaplı" versiyasıdır. Pgawk ilə işləyərkən , profil hər bir istifadəçi tərəfindən müəyyən edilmiş funksiya üçün sol margində və funksiya çağırış sayımlarında proqramdakı hər bir bəyanatın icra sayılarını ehtiva edir.

Yenidən interval

- interval Aralıq ifadələrin müntəzəm ifadə uyğunluğunda istifadə edilməsini təmin edin ( aşağıda Düz ifadələr bax). Aralıq ifadələr AWK dilində ənənəvi olaraq təqdim edilməmişdir. POSIX standartları awkegrep bir-biri ilə uyğundur etmək üçün onları əlavə etdi. Bununla belə, onların istifadəsi, köhnə AWK proqramlarını pozmaq ehtimalı ilə bağlıdır , buna görə də gawk yalnız bu seçimi ilə tələb olunarsa və ya - posix göstərildikdə onları təmin edir.

-W qaynaq proqramı mətni

Proqramın mətni AWK proqram mənbəyi kodu kimi istifadə edin. Bu seçim kitabxana funksiyalarının asanlıqla birləşməsinə imkan verir ( f--file variantları vasitəsilə istifadə olunur) komanda xəttinə daxil edilmiş mənbə kodu ilə. Əsasən, qabıqlı skriptlərdə istifadə olunan orta və böyük AWK proqramları nəzərdə tutulur.

-W versiyası

- Çıxış versiyasını standart çıxdığınız bu xüsusi kopya versiyasını çap edin. Bu, əsasən, Free Software Foundation-nun paylamasına baxmayaraq sisteminizdə mövcud olan gawk nüsxəsinin gündəmədiyini bilmək üçün faydalıdır. Hata bildirərkən bu da faydalıdır. ( GNU Kodlama Standartlarına görə , bu seçimlər dərhal, uğurlu çıxışa səbəb olur.)

- Seçimlərin sona çatması. Bu AWK proqramının özü ilə `` `- '' ilə başlayan daha çox arqumentlərə imkan vermək faydalıdır. Bu əsasən digər POSIX proqramları tərəfindən istifadə edilən konvensiyanı təhlil edən arqumentlə bağlıdır.

Uyğunluq rejimində, digər variantlar etibarsız olaraq qeyd olunur, lakin əksinə, nəzərə alınmır. Proqramın mətni təmin edildikdən sonra, normal əməliyyatda, ARGV prosesində AWK proqramına naməlum imkanlar ötürülür. Bu, xüsusən AWK proqramlarını '#!' 'Yürütülebilir tərcüməçi mexanizmi vasitəsilə həyata keçirmək üçün faydalıdır.

AWK PROQRAMI YÜKLƏMƏSİ

AWK proqramı nümunə-hərəkət ifadələrinin ardıcıllığı və isteğe bağlı funksiya təriflərindən ibarətdir.

model { hərəkət ifadələri }

funksiya adı ( parametr siyahısı ) { ifadələr }

Gawk əvvəlcə proqram qaynağından proqram qaynağından, əgər arqumentlərdən ' qaynaq' ya da komanda xəttindəki ilk qeyri-variant dəyişikliyindən oxuyur . -f-source variantları komanda xəttində bir neçə dəfə istifadə oluna bilər. Gawk bütün proqram faylları və command line qaynaq mətnləri birlikdə birləşdirildiyi kimi proqram mətni oxuyur. Bu, AWK funksiyalarının kitabxanalarını yaratmaq üçün faydalıdır, bunları istifadə edən hər bir AWK proqramına daxil etmədən. Kitabxana funksiyalarını command line proqramları ilə qarışdırmaq imkanı da təmin edir.

AWKPATH ətraf mühit dəyişkənliyi, -f parametri ilə adlandırılan mənbə fayllarını tapmaqda istifadə etmək üçün axtarış yolunu müəyyənləşdirir. Bu dəyişən yoxdursa, default yol ".: / Usr / local / share / awk" dir . (Gerçək kataloqu gawkin necə qurulduğu və quraşdırıldığına bağlı olaraq dəyişə bilər.) -f variantına verilən bir fayl adı '/' 'bir simvolu varsa, heç bir yol axtarışı aparılmır.

Gawk AWK proqramlarını aşağıdakı qaydada yerinə yetirir. Birincisi, -v variantında göstərilən bütün dəyişən tapşırıqlar yerinə yetirilir. Bundan sonra, gawk proqramı daxili forma yığır . Sonra, gawk BEGIN blok (s) (əgər varsa) kodunu icra edir və sonra ARGV array adlı hər bir fayl oxumaq davam edir. Komanda satırında heç bir fayl varsa, gawk standart girişi oxuyur.

Komanda xəttində bir filename forma var = val varsa , dəyişən təyinat kimi qəbul edilir. Değişken var val dəyərinə veriləcək. (Hər hansı bir BEGIN bloku işləndikdən sonra baş verir.) Komut satırı dəyişən təyinatı, AWK, girişlərin sahələrə və qeydlərə necə pozulduğunu nəzarət etmək üçün istifadə etdiyi dəyişənlərə dinamik təyin etmək üçün ən faydalıdır. Bir məlumatın faylı üzərində birdən çox keçid lazım olduqda dövlət nəzarət üçün də faydalıdır.

ARGV'nin xüsusi bir elementinin dəyəri boşsa ( "" ), gawk üzərinə atlar .

Girişdə olan hər bir qeyd üçün, AWK proqramında hər hansı bir nümunəyə uyğun olub olmadığını gawk testləri. Rekorda uyğun olan hər bir model üçün əlaqəli hərəkət yerinə yetirilir. Nümunələr proqramda meydana gəldikləri sırada test edilir.

Nəhayət, bütün giriş bitdikdən sonra, gawk END blok (s) (əgər varsa) kodunu icra edir.

Dəyişənlər, qeydlər və sahələr

AWK dəyişənləri dinamikdir; ilk istifadə etdikləri zaman meydana gəlir. Onların dəyərləri ya qayçı nöqtələri, ya da strings və ya hər ikisi, necə istifadə olunduğuna bağlıdır. AWK da bir ölçülü array var; Çoxlu ölçüləri olan diziler simüle edilə bilər. Bir neçə əvvəlcədən müəyyən edilmiş dəyişənlər bir proqram kimi çalışır; bunlar lazımlı şəkildə təsvir olunacaq və aşağıda xülasə veriləcəkdir.

Qeydlər

Normalda qeydlər yeni xəttli simvollarla ayrılır. Daxili dəyişən RS -lərə dəyərləri təyin etməklə qeydlərin necə ayrıldığını nəzarət edə bilərsiniz. RS hər hansı bir xarakter daşıyırsa, bu xarakter qeydlər ayırır. Əks təqdirdə, RS normal bir ifadədir. Mətn, bu normal ifadə ilə eşleşen girişi ayırır. Uyğunluq rejimində, qeydlərin ayrılması üçün yalnız string dəyərinin yalnız birinci xarakteri istifadə olunur. RS null simli olaraq təyin edildikdə, qeydlər boş xətlər ilə ayrılır. RS null simli olaraq təyin edildikdə, yeni satırın xarakteri həmişə FS-nin dəyərinə əlavə olaraq bir sahə ayırıcı kimi çıxış edir.

Sahələr

Hər bir giriş qeydinin oxunduğu kimi, gawk sahə ayırıcı kimi FS dəyişəninin dəyərini istifadə edərək, sahələri rekord böler. FS tək bir xarakterli olsa, sahələr bu xarakterlə ayrılır. FS null simli, onda hər bir fərdi xarakter ayrı bir sahə olur. Əks təqdirdə, FS'nin tam bir ifadəsi olması gözlənilir. FS'nin tək bir məkan olduğu xüsusi vəziyyətdə sahələr boşluq və / və ya nişanlar və / və ya yeni satırlar tərəfindən ayrılır. (Lakin aşağıda - posix müzakirəsinə baxın). Qeyd: IGNORECASE dəyəri (aşağıya bax) da FS normal bir ifadə olduğunda sahələrin necə bölündüyünü və RS'nin normal bir ifadə olduğu zaman qeydlərin necə ayrıldığını təsir edir.

FIELDWIDTHS dəyişəninin nömrəli bir yer ayrılmış siyahısına təyin edildikdə , hər bir sahənin sabitliyə malik olması gözlənilir və gawk müəyyən genişliklərdən istifadə edərək qeydləri böləcəkdir. FS- nin dəyəri nəzərə alınmır. FS- ə yeni bir dəyər verilməsi FIELDWIDTHS- in istifadə edilməsini ləğv edir və default davranışını bərpa edir.

Giriş qeydindəki hər bir sahə onun mövqeyi, $ 1 , $ 2 və s. Ilə istinad edilə bilər. $ 0 bütün qeyddir. Sahələrə dayandırılmayan sahələrə ehtiyac yoxdur:

n = 5
çap $ n

giriş qeydində beşinci sahəni yazır.

NF dəyişən giriş qeydində olan sahələrin ümumi sayına təyin olunur.

Qeyri-mövcud sahələrə aid istinadlar (yəni NF-dən sonra olan sahələr) null-string yaradır. Lakin qeyri-mövcud sahəyə təyin etmək (məsələn, $ (NF + 2) = 5 ) NF- nin dəyərini artırır, hər hansı bir aralıq sahəni null simli ilə dəyər təşkil edir və 0 $ dəyərini recomputed sahələr OFS dəyərinə görə ayrılır. Mənfi nömrəli sahələrə istinadlar ölümcül bir səhv doğurur. NF-nin azalması sahələrin dəyərlərini itirildiyi yeni dəyərdən keçirməyə səbəb olur və sahələr OFS- in dəyəri ilə ayrılaraq, $ 0- ə bərabərləşdiriləcəkdir .

Mövcud bir sahəyə dəyər verilməsi $ 0-a istinad edildikdə bütün qeydlərin yenidən qurulmasına səbəb olur. Eynilə, $ 0 dəyərinə təyin etmək, qeydlərin sahələr üçün yeni dəyərlər yaradaraq replit olmasına səbəb olur.

Daxili Dəyişənlər

Gawk 'in yerleşik değişkenleri şunlardır :

ARGC

Komut satırı arqumentlərinin sayı ( gawk variantları və ya proqram qaynağı daxil deyildir).

ARGIND

Mövcud faylın ARGV -də indeksi işlənir.

ARGV

Komanda xəttinin arqumentləri array. Array 0'dan ARGC -ə endekslenir - 1. ARGV məzmununun dinamik şəkildə dəyişməsi data üçün istifadə olunan faylları idarə edə bilər.

BINMODE

POSIX olmayan sistemlərdə, bütün fayl I / O üçün 'ikili' rejimindən istifadə edir. 1, 2 və ya 3 sayısal dəyərlər, giriş faylları, çıxış faylları və ya bütün fayllar sırası ilə ikili I / O istifadə etməlidirlər. "R" , və ya "w" düstur dəyərləri, giriş faylları və ya çıxış faylları sırası ilə ikili I / O istifadə etməlidirlər. "Rw" və ya "wr " düstur dəyərləri bütün faylların ikili I / O istifadə etməsini müəyyənləşdirir. Hər hansı bir digər string dəyəri "rw" kimi qəbul edilir, lakin bir xəbərdarlıq mesajı yaradır.

CONVFMT

Nömrələr üçün "% .6g" çevrilməsi formatı, default olaraq.

ENVIRON

Mövcud mühitin dəyərlərini əks etdirən bir sıra. Array, ətraf dəyişənləri tərəfindən endekslenir, hər bir element bu dəyişənin dəyəri (məsələn, ENVIRON ["HOME"] / ev / arnold ola bilər). Bu array dəyişdirilməsi, redirection və ya system () funksiyası ilə spawns spawns proqramları tərəfindən görülən ətraf mühitə təsir etmir.

ERRNO

Getline üçün bir redirectction edərkən, getline və ya close () zamanı bir sistem hatası oluşursa , ERRNO hata tanımlayan bir dize içerecektir. Qiymət qeyri-ingilis dilində tərcüməyə tabedir.

Sahədir

Adi-kosmik sahədə aralığının ayrılmış siyahısı. Set zaman, gawk sahə ayırıcı kimi FS dəyişəninin dəyəri istifadə əvəzinə, sabit genişlik sahələrinə giriş ayrılır.

FAYL ADI

Mövcud giriş faylı adı. Komanda satırında heç bir fayl göstərilmirsə, FILENAME dəyəri '`-' 'dir. FILENAME , BEGIN blokunun içində müəyyən edilmir ( getline ilə müəyyən edilməmiş halda).

FNR

Cari giriş faylı daxil rekord nömrə.

FS

Giriş sahəsi ayırıcısı, default olaraq bir yer. Yuxarıda gördüyünüz sahələrə baxın.

IGNORECASE

Bütün müntəzəm ifadə və simli əməliyyatların işi həssaslığını nəzarət edir. IGNORECASE qeyri-sıfır dəyərə malikdirsə, simvol müqayisə və qaydalara uyğunluq, FS ilə sahə parçalanma, RS ilə ayıran rekor, müntəzəm ifadə ilə ~~ ilə uyğunlaşdırma və gensub () , gsub () , index () , uyğunluq () , split ()sub () funksiyaları normal ifası əməliyyatları zamanı hər şeyi unutmamalıdır. Qeyd: Array subscriptinqi təsir göstərmir və asort () funksiyası yoxdur.

Beləliklə, IGNORECASE sıfıra bərabər deyilsə, / aB / "ab" , "AB" , "Ab""AB" bütün strings ilə eşleşir . Bütün AWK dəyişənləri ilə olduğu kimi, IGNORECASE'in başlanğıc dəyəri sıfırdır, belə ki, bütün normal ifadələr və simli əməliyyatlar normal halda həssasdır. Unix altında, tam ISO 8859-1 Latin-1 karakter seti göz ardı edərkən istifadə olunur.

LINT

AWK proqramı daxilində - lint variantının dinamik nəzarətini təmin edir. Doğru olduğunda, gawk lint uyarılarını yazdırır . Səhv zaman, bu deyil. Datanın dəyəri "ölümcül" təyin edildikdə, lint xəbərdarlıqları, tam olaraq - lint = ölümcül kimi, ölümcül səhvlər olur . Başqa hər hansı bir dəyər yalnız xəbərdarlıqları yazır.

NF

Mövcud giriş qeydində sahələrin sayı.

NR

Bu günə qədər görülən giriş qeydlərinin ümumi sayı.

OFMT

Nömrələr üçün çıxış formatı, "% .6g" , default olaraq.

OFS

Çıxış sahəsi ayırıcısı, default olaraq bir yer.

ORS

Çıxış qeydini ayırıcı, default olaraq yeni bir xətt.

PROCINFO

Bu array elementləri çalışan AWK proqramı haqqında məlumat əldə etməyə imkan verir. Bəzi sistemlərdə, prosedurda olan əlavə qrupların sayı olan bəzi n qrupu üçün "qrup n " vasitəsilə qrupda elementlər ola bilər. Bu elementləri test etmək üçün operatorda istifadə edin. Aşağıdakı elementlər təmin edilə bilər:

PROCİNFO ["egid"]

getegid (2) sistem çağırışının dəyəri.

PROCİNFO ["euid"]

geteuid (2) sistem çağırışının dəyəri.

PROCİNFO ["FS"]

FS ilə sahənin parçalanması halında "FS" və ya FIELDWIDTHS ilə sahə parçalanması halında "FIELDWIDTHS" qüvvədədir.

PROCİNFO ["gid"]

getgid (2) sistem çağırışının dəyəri.

PROCİNFO ["pgrpid"]

cari prosesin proses qrupu kimliyi.

PROCİNFO ["pid"]

cari prosesin proses kimliyi.

PROCİNFO ["ppid"]

cari prosesin əsas proses identifikasiyası.

PROCINFO ["uid"]

getuid (2) sistem çağırışının dəyəri.

RS

Girdi qeydini ayırıcı, default olaraq yeni bir satır.

RT

Rekord terminator. Gawk, RT'nin belirttiği karakter ya da düzenli ifadeye uyğun gələn giriş metnine RT'yi ayarlar .

RSTART

İlk karakterin eşleştiği eşleme () ; 0 matç yoxsa. (Bu, xarakter göstəricilərinin bir başlanğıc olduğunu göstərir.)

RLENGTH

String () ilə eşleşen dize uzunluğu; Əgər heç bir uyğunluq yoxdur.

SUBSEP

Bir neçə alt sətri array elementlərindəki "\ 034" olaraq ayırmaq üçün istifadə olunan xarakter.

TEXTDOMAIN

AWK proqramının mətn sahəsi; Proqramın strings üçün lokallaşdırılmış tərcümələri tapmaq üçün istifadə olunur.

Diziler

Sütunlar kvadrat mötərizələr ( [] ) arasında bir ifadə ilə subscripted olunur. Əgər ifadənin ifadəsi siyahısı ( expr , expr ...) varsa, sətir indeksləri SUBSEP dəyişəninin dəyəri ilə ayrılmış hər ifadəin (string) dəyərinin birləşməsindən ibarət olan bir simvoldur. Bu qurğu çoxsaylı ölçülü serialları simulyasiya etmək üçün istifadə olunur. Misal üçün:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "salam, dünya \ n"

"hello, world \ n" simli "A \ 034B \ 034C" dizisiyle endekslenen dizinin x elementinə atar . AWK'daki bütün diziler birleştirici, yani string dəyərləri ilə endekslenir.

Xüsusi operator , bir sıra və ya bir ifadədə müəyyən bir dəyərdən ibarət olan bir göstəricinin olub olmadığını görmək üçün istifadə edilə bilər.

əgər array (val aralığında) print array [val]

Sətirdə bir neçə əlavələr varsa, (i, j) array istifadə edin .

Bu quruluş, həmçinin, bir sıra bütün elementləri üzərində yineleme üçün bir loop üçün də istifadə edilə bilər.

Silmək ifadəsini istifadə edərək bir element bir sıra silinmiş ola bilər. Silinmə bəyanatı, bir alt simvol olmadan dizinin adını göstərərək, bir sıra bütün məzmununu silmək üçün istifadə edilə bilər.

Dəyişən Yazı və Dönüşüm

Dəyişənlər və sahələr (üzən nöqtələr) ədəd və ya simlər və ya hər ikisi ola bilər. Bir dəyişənin dəyəri necə şərh edildiyi onun kontekstinə bağlıdır. Bir nümunə ifadədə istifadə edildikdə, simli olaraq istifadə ediləcək bir simli olaraq istifadə edildikdə, bu bir sıra sayılır.

Bir dəyişənin bir sıra kimi qəbul edilməsinə məcbur etmək üçün 0-ə əlavə edin; onu bir düstur kimi qəbul etmək məcbur etmək, null string ilə birləşdirmək.

Bir simli bir ədədə çevrilməlidir, dönüşüm strtod (3) istifadə edərək həyata keçirilir. Bir sıra, sprintf (3) üçün bir format dizesi olaraq CONVFMT dəyərini argument kimi dəyişən sayısal dəyərlə istifadə etməklə bir dize çevirir . Ancaq AWK'daki bütün nömrələr üzən nöqtələr olsa da, ayrılmaz dəyərlər həmişə tamsayılar halına çevrilir. Beləliklə, verilmişdir

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

dəyişən b "12" düstur dəyərinə malikdir və "12.00" deyil .

Gawk , aşağıdakıları müqayisə edir: Əgər iki dəyişən ədədi sayılırsa , onlar ədədi ilə müqayisə edilir. Bir dəyər nümerikdirsə, diğərində 'numeric string' olan bir dize dəyəri varsa, müqayisə ədədi sayılır. Əks təqdirdə sayısal dəyər bir simliya çevrilir və simli müqayisə edilir. Əlbətdə, strings kimi iki simli müqayisə edilir. Qeyd edək ki, POSIX standartı hər yerdə, hətta sabitləri string etmək üçün "sayısal simli" konsepsiyasını tətbiq edir. Ancaq bu, açıq-aydın yanlışdır və gawk bunu etməz. (Xoşbəxtlikdən, bu standartın növbəti versiyası ilə müəyyən edilir.)

Qeyd edək ki, "57" kimi simli sabitlər sayısal strings deyil, bunlar string sabitləridir. 'Sayısal simli' fikri yalnız sahələr, getline girişi, FILENAME , ARGV elementləri, ENVIRON elementləri və split () ilə yaradılan bir sıra elementləri üçün nümunəvi simlərdir . Əsas fikirdir ki, istifadəçi daxilolmaları və sayısal olaraq görünən yalnız istifadəçi girişi bu şəkildə müalicə edilməlidir.

Başlatılmamış değişkenler sayısal değerine 0 ve dize değeri "" (null veya boş, string) sahiptir.

Səkkiz və Onaltıq sabitlər

Gawk'un 3.1 sürümünden başlayarak , AWK proqramı kaynak kodunuzdaki C-style sekizlik ve onaltılık sabitleri istifadə edə bilərsiniz. Məsələn, səkkiz dəyər 011 decimal 9'a bərabərdir və onaltılıq dəyər 0x11 decimal ədədinə bərabərdir.

String Sabit

AWK dırnaq sabitləri cüt sütunlar ( " ) arasında qeydə alınmış simvolların ardıcıllığıdır. Cədvəllər daxilində bəzi qaçış ardıcıllığı C kimi tanınır. Bunlar:

\\

Tam bir backslash.

\ a

`` Uyarı '' xarakteri; adətən ASCII BEL xarakteri.

\ b

backspace.

\ f

form-feed.

\ n

yeni xətt.

\ r

carriage return.

\ t

yatay sekmə.

\ v

şaquli nişanı.

\ x hex rəqəmləri

Xəttindən sonra onaltılıq rəqəmlərin simasını təmsil edən xarakter. ANSIC-də olduğu kimi, bütün on altı hektar rəqəmlər qaçış sırasının bir hissəsi hesab olunur. (Bu xüsusiyyət bizə komitə tərəfindən dil dizaynı barədə bir şey söyləməlidir.) Məsələn, "\ x1B" ASCIIESC (qaçış) xarakteridir.

\ ddd

Səkkiz rəqəmin 1-, 2-, və ya 3-rəqəmli sırası ilə təmsil olunan xarakter. Məsələn, "\ 033" ASCII ESC (qaçış) xarakteridir.

\ c

Dəqiq xarakter c .

Qaçış ardıcıllığı da daimi ifadələr içində istifadə edilə bilər (məsələn, / [\ t \ f \ n \ r \ v] / boşluq simvolları ilə eşleşir).

Uyğunluq rejimində səkkiz və onaltılı qaçış sekansları ilə təmsil olunan simvollar normal ifadə sabitlərində istifadə edildikdə tam mənada müalicə olunur. Beləliklə / a \ 52b / a \ * b / ilə bərabərdir.

Nümunələr və hərəkətlər

AWK bir xətt yönümlü dildir. Nümunə əvvəlcə gəlir, sonra hərəkətdir. Fəaliyyət hesabatları {} da əlavə olunur. Nümunə əskik ola bilər, ya da hərəkət əskik ola bilər, amma əlbəttə ki, hər ikisi deyil. Nümunə itkinsə, hərəkət girişin hər bir qeydinə görə həyata keçirilir. Bir itkin hərəkət, ekvivalentdir

{print}

bütün qeydləri yazan.

Şərhlər '#' 'xarakterindən başlayır və xəttin sonuna qədər davam edir. Boş xətləri bəyanatları ayırmaq üçün istifadə edilə bilər. Normal olaraq, bir bildiriş yeni bir satırla bitərsə də, bu, ',', ', { , ? , : , && və ya || . Nöqtələrlə bitən və ya başqa ifadələr də aşağıdakı satırda avtomatik olaraq davam etdirilir. Digər hallarda, bir xətt, onu sona çatdırmaqla davam etdirilə bilər, bu halda yeni xətt göz ardı edilir.

Birdən çox ifadələr onları '`` ilə bölüşdürməklə bir xəttə qoyulmalıdır.' '. Bu, həm nümunə-hərəkət cütünün (adi hal), həm də nümunə hərəkəti ifadələrinin öz əksini tapır.

Nümunələr

AWK nümunələri aşağıdakılardan biri ola bilər:

BEGIN END / müntəzəm ifadə / relational ifadəsi desen && model naxış || naxış nümunəsi ? naxış : model ( model ) ! model desen1 , model2

BEGINEND , girişə qarşı test edilməyən iki xüsusi nümunədir . Bütün BEGIN nümunələrinin hərəkət hissəsi bütün ifadələrin bir BEGIN blokunda yazılmış olduğu kimi birləşir. Hər hansı bir girişin oxunmasından əvvəl icra edilir. Eyni şəkildə, bütün END blokları birləşir və bütün giriş bitdikdə (və ya bir çıxış kodu verildikdə) həyata keçirilir. BEGINEND nümunələri nümunə ifadələrində digər nümunələrlə birləşdirilə bilməz. BEGINEND nümunələri eksik aksiyalara malik ola bilməz.

Düzgün ifadə / nümunələr üçün, müvafiq ifadələr müntəzəm ifadəyə uyğun olan hər bir giriş qeydinə görə yerinə yetirilir. Daimi ifadələr egrep (1) ilə eyni və aşağıda verilmişdir.

İlişkisel ifadeler aşağıda göstərilən operatorlardan hər hansı bir hərəkətdə istifadə edə bilər. Bunlar ümumiyyətlə müəyyən sahələrdə müəyyən normal ifadələrə uyğun olub olmadığını test edir.

The && , || , və ! operatorlar C kimi olduğu kimi məntiqli və məntiqi YA və məntiqi deyildir. Onlar C-də olduğu kimi qısa dövr qiymətləndirmələr aparırlar və daha ibtidai nümunə ifadələri birləşdirmək üçün istifadə olunurlar. Çox dildə olduğu kimi, qiymətləndirmə qaydasını dəyişmək üçün parantezlər istifadə edilə bilər.

The ? Operatoru C-də eyni operatora bənzəyir. Birinci model düzgündürsə, test üçün istifadə edilən nümunə ikinci nüsxədir, əks halda üçüncüdür. İkinci və üçüncü nümunələrdən yalnız biri qiymətləndirilir.

Nümunə1 , nümunə2 bir ifadənin forması bir sıra nümunəsi adlanır. Bu, nümunə1 ilə uyğun gələn bir qeyd ilə başlayan bütün giriş qeydlərinə uyğun gəlirdesen2 ilə uyğun olan bir qeydə qədər davam edir. Hər hansı başqa bir nümunə ifadə ilə birləşmir.

Daimi ifadələr

Daimi ifadələr egrepdə tapılmış geniş çeşiddir . Bunlar aşağıdakılardan ibarətdir:

c

qeyri-metakaracter c ilə eşleşir c .

\ c

c .

.

yeni satır daxil olmaqla hər hansı bir xarakterə uyğun gəlir.

^

bir simli başlanğıc ilə eşleşir.

$

bir stringin sonuna uyğun gəlir.

[ abc ... ]

xarakterli siyahı, abc hər hansı bir simvolu ilə eşleşir ....

[^ abc ... ]

pozulmayan xarakter siyahısı, abc istisna olmaqla, hər hansı bir xarakterə uyğun gəlir ....

r1 | r2

alternasiya : r1 və ya r2 ilə uyğunlaşır.

r1r2

birləşmə: r1 və sonra r2 eşleşir .

r +

bir və ya daha çox r 'e uyğun.

r *

sıfır və ya daha çox r eşleşiyor .

r ?

sıfır və ya bir r 'e uyğun.

( r )

qruplaşdırma: r oyunları.

r { n }

r { n ,}

r { n , m } braces içərisində bir və ya iki ədəd interval ifadəsini ifadə edir . Aşırmalarda bir ədəd varsa, əvvəlki normal ifadəsi r n dəfə təkrarlanır. Bir ədəd virgülle ayrılmış iki ədəd varsa, r , n dəfə m dəfə təkrarlanır. Bir ədəd vergüllə təqib edildikdə, r ən azı n dəfə təkrarlanır.

Aralıq ifadələr yalnız - posix və ya - intervalın əmr satırında göstərildiyi zaman mövcuddur.

\ y

bir sözün başlanğıcında və ya sonunda boş simli ilə uyğunlaşır.

\ B

bir söz içərisində boş simli ilə uyğunlaşır.

\ <

bir sözün başında boş simli ilə uyğunlaşır.

\>

bir sözün sonunda boş simli ilə uyğunlaşır.

\ w

hər hansı bir söz tərkibi xarakterinə (məktub, rəqəm və ya altçizgi) uyğun gəlir.

\ W

söz tərkibi olmayan hər hansı bir xarakterə uyğun gəlir.

\ `

bir tampon (dize) əvvəlində boş simli ilə uyğunlaşır.

\ '

bir tamponun sonunda boş dize eşleşir.

Dəyirici sabitlərdə qüvvədə olan qaçış ardıcıllığı (aşağıya bax) normal ifadələrdə də etibarlıdır.

Xarakter sinifləri POSIX standartında təqdim olunan yeni bir xüsusiyyətdir. Bir xarakter sinfi xüsusi bir atributu olan simvolların siyahısını təsvir etmək üçün xüsusi bir qeyddir, lakin faktiki simvolların özləri ölkədən ölkə və / və ya hərflərdən fərqlənə bilərlər. Məsələn, alfabetik xarakterin nə anlayışı ABŞ-da və Fransada fərqlənir.

Bir xarakter sinfi yalnız bir simvol siyahısının mötərizələrində olan müntəzəm ifadədə etibarlıdır. Xarakterli siniflər [: , sinfi ifadə edən bir söz və :] ibarətdir . POSIX standartı ilə təyin olunan xarakter sinfləri bunlardır:

[: alnum:]

Alfanümerik simvollar.

[: alfa:]

Alfabetik simvollar.

[: blank:]

Space və ya sekme simvolları.

[: cntrl:]

Nəzarət simvolları.

[: rəqəm:]

Sayısal simvollar.

[: grafik:]

Yazdırılabilir və görünən simvollar. (Bir ədəd həm də ikən bir yer çap edilə bilər, ancaq görünür deyil.)

[: aşağı:]

Aşağıdakı əlifba simvolları.

[: print:]

Yazdırılabilir simvollar (nəzarət simvolları olmayan simvollar).

[: punkt:]

Dəqiqə simvolları (məktub, rəqəm, nəzarət simvol və ya kosmik simvol olmayan).

[: space:]

Kosmik simvollar (məsələn, kosmik, nişan və formfeed kimi bir neçə ad).

[: üst:]

Yuxarıdakı əlifba simvolları.

[: xdigit:]

Heksadecimal rəqəmlər olan simvollar.

Məsələn, POSIX standartından əvvəl alfasayısal simvollarla uyğunlaşmaq üçün / [A-Za-z0-9] / yazmaq məcburiyyətində qalacaqsınız . Karakterinizin başqa alfabetik simvolları varsa, bu onlara uyğun olmaz və əgər xarakteriniz ASCII-dən fərqli olaraq yığışarsa, bu da ASCII alfasayısal simvollara uyğun gəlmir. POSIX xarakteri dərsləri ilə / [[: alnum:]] / yaza bilərsiniz və bu, sizin xarakter kümesinizə aid əlifba və ədədi simvollarla eşleşir .

Xarakter siyahılarında iki əlavə xüsusi seksiyə görünə bilər. Bunlar, birdən çox simvol ilə təmsil olunan tək simvollara (birləşmə elementləri adlanan), həmçinin birləşən və ya sıralamaq məqsədlərinə bərabər olan bir neçə simvolu olmayan ASCII olmayan simvol dəstlərinə aiddir. (Məsələn, fransız, düz 'e' və məzara vurulmuş e'sı bərabərdir.)

Rəmzləri qarışdırmaq

Birləşən simvol [..] . Məsələn, əgər ch hərfləşən elementdirsə, [[.]] Bu cür elementə uyğun olan normal ifadəsidir, [ch] isə c ya h ilə uyğun olan normal bir ifadədir.

Ekvivalentlik Dərsləri

Ekvivalentlik sinfi, ekvivalent olan bir simvol siyahısı üçün bir locale xüsusi adıdır. Adı [==] daxil edilir . Məsələn, e adı "e", "e", "" və "e" nin hamısını təmsil etmək üçün istifadə edilə bilər. Bu halda, [[= e =]] e , e ' və ya e`lərdən hər hansı birinə uyğun gəlir .

Bu xüsusiyyətlər qeyri-ingilis dilində danışan yerlərdə çox qiymətlidir. Kitabxanada işlədilən gawk , normal ifadə eşleme üçün istifadə edir, hazırda yalnız POSIX xarakter siniflərini tanıyır; onlar təsadüfi simvollar və ya ekvivalentlik dərsləri tanımırlar.

\ Y , \ B , \ < , \> , \ w , \ W , \ `\ ' operatorları gawk üçün xüsusi; onlar GNU müntəzəm ifadə kitabxanalarına əsaslanan uzantılardır.

Müxtəlif command line variantları gawk normal ifadələrdə simvolları necə şərh etdiyini nəzarət edir.

Heç bir seçim yoxdur

Varsayım halında, gawk, POSIX düzenli ifadelerinin bütün imkanlarını və yuxarıda təsvir olunan GNU müntəzəm ifadə operatorlarını təmin edir. Ancaq interval ifadələri dəstəklənmir.

- posix

Yalnız POSIX düzenli ifadələr dəstəklənir, GNU operatorları xüsusi deyil. (Məsələn, \ w bir literal w ilə eşleşir ). Aralıq ifadələrə icazə verilir.

- ənənəvi

Traditional Unix awk normal ifadələr eşleştirilir. GNU operatorları xüsusi deyil, interval ifadələr mövcud deyil və nə POSIX xarakter sinifləri ( [[: alnum:] və s.). Səkkiz və onaltılıq qaçış sekansları ilə təsvir olunan simvollar, normal ifadələr metakarakteriyaları təmsil edirlərsə belə, tam olaraq müalicə olunur.

- interval

Normal ifadələrdə aralıq ifadələrə icazə verin, hətta ənənəvi hala gətirilmişdir.

Tədbirlər

Fəaliyyət hesabatları braceletlərdə, {} əlavə olunur . Fəaliyyət ifadələri ən çox dildə olan adi təyinat, şərti və loop ifadələrdən ibarətdir. Operatorlar, nəzarət hesabatları və mövcud olan giriş / çıxış hesabatları C.

Operatorlar

AWK-da operatorlar prioritetini azaldacaqdırlar

( ... )

Qruplaşdırma

$

Sahəyə istinad.

++ -

Artım və azalma, həm prefiks, həm də postfiks.

^

Qiymətləndirmə ( ** istifadə edilə bilər və təyinat operatoru üçün ** = ).

+ -!

Unary plus, unary minus və məntiqi tənzihə.

* /%

Çarpma, bölmə və modul.

+ -

Əlavə və çıxarma.

yer

String concatenation.

<>

<=> =

! = == Daimi əlaqəli operatorlar.

~! ~

Daimi ifadə matçında, negatif matç. Qeyd: ~ ya da ~ ~ nın sol tərəfində daimi bir müntəzəm ifadə ( / foo / ) istifadə etməyin. Yalnız sağ tərəfdən birini istifadə edin. Ifadəsi / foo / ~ exp , (($ 0 ~ / foo /) ~ exp ) ilə eyni məna daşıyır. Bu, adətən nə nəzərdə tutulmur.

içində

Array üzvlüyü.

&&

Məntiqli və.

||

Məntiqi YA.

?:

C şərti ifadə. Bu forma formu var ? expr2 : expr3 . Expr1 doğruysa , ifadənin dəyəri expr2 , əks halda expr3 olur . Expr2expr3-dən yalnız biri qiymətləndirilir.

= + = - =

* = / =% = ^ = Atama. Həm mütləq təyinat ( var = dəyər ), həm də operator təyinatı (digər formalar) dəstəklənir.

Nəzarət hesabatları

Nəzarət bəyanatları belədir:

sətri sil ( sətirdə ) ( for ) sətirdə göstərmək üçün ( expr1 ; expr2 ; expr3 ) ifadəsi üçün ( şərti ) ifadə ( statement ) if ( şərti ) ifadəsi [ else ifadəsi ] ifadələr }

I / O Hesabatları

Giriş / çıxış hesabatları aşağıdakılardır:

yaxın ( fayl [ , necə ] )

Fayl, boru və ya birgə prosesi bağlayın. İki yollu bir borunun bir ucunu birgə prosesə bağlamaq üçün isteğe bağlı olaraq yalnız necə istifadə olunmalıdır. Bu " ya " ya da "gələn" bir dize dəyəri olmalıdır.

getline

Növbəti giriş qeydindən 0 $ təyin edin; NF , NR , FNR qurmaq.

getline < fayl

Faylın sonrakı qeydindən $ 0 qurun; NF seçin .

getline var

Barı növbəti giriş qeydindən seçin; NR , FNR qur .

getline var < fayl

Faylın sonrakı qeydindən var seçin.

komanda | getline [ var ]

Komanda əmrini ya da yuxarıdakı kimi 0 və ya var'a çıxardın .

komanda | & getline [ var ]

Çıxışları yuxarıdakı kimi $ 0 və ya var'a boru kəmərinə birləşdirən bir proses olaraq əmr edin . Qarşılıqlı proseslər bir çubuq uzantısıdır.

Bundan sonra

Cari giriş qeydini işləməyin dayandırılması. Növbəti giriş qeydləri oxunur və AWK proqramında ilk nümunə ilə işlənir. Giriş verilənlərinin sonuna çatıldığı təqdirdə, END blok (s), əgər varsa, icra edilir.

nextfile

Hazırkı giriş faylı işləməyin dayandırılması. Növbəti giriş qeydləri oxumaq növbəti giriş faylı gəlir. FILENAMEARGIND yenilənir, FNR 1-ə bərabərdir və AWK proqramında ilk nümunə ilə işləmə başlayır. Giriş verilənlərinin sonuna çatıldığı təqdirdə, END blok (s), əgər varsa, icra edilir.

çap

Cari qeydləri yazır. Çıxış qeydləri ORS dəyişəninin dəyəri ilə xitam edilir.

print expir-siyahısı

Ifadələri yazır. Hər bir ifadə, OFS dəyişəninin dəyəri ilə ayrılır. Çıxış qeydləri ORS dəyişəninin dəyəri ilə xitam edilir.

print expr-siyahısı > faylı

Fayl üzərində ifadələr yazır. Hər bir ifadə, OFS dəyişəninin dəyəri ilə ayrılır. Çıxış qeydləri ORS dəyişəninin dəyəri ilə xitam edilir.

printf fmt, expr-siyahısı

Format və çap.

printf fmt, expr-siyahısı > fayl

Fayl üzərində format və çap.

sistem ( cmd-line )

Komanda cmd-lineunu yerinə yetirin və çıxış vəziyyətini qaytarın. (Bu POSIX olmayan sistemlərdə mövcud olmaya bilər.)

fflush ( [ fayl ] )

Açıq fayl və ya boru faylına aid olan hər hansı bir tamponu yandırın. Fayl eksiksə, standart çıxış boşaldılır. Fayl null simliysa, bütün açıq fayllar və borular tamponları boşaldılır.

Əlavə çıxış redirections çapprintf üçün icazə verilir.

çap ... >> faylını verin

faylına çıxışları əlavə edir.

çap ... | komanda

bir boru yazır.

çap ... | və əmr

məlumatları birgə prosesə göndərir.

Getline əmri faylın sonunda 0 və səhvdə -1 qaytarır. Bir səhvdən sonra, ERRNO problemi izah edən bir simli var.

Qeyd: bir boru və ya birgə prosesi getline və ya çapdan və ya bir loop içərisində printf istifadə etsəniz, komanda yeni nümunələri yaratmaq üçün yaxın () istifadə etməlisiniz . AWK avtomatik olaraq boruları və ya EOF-ə qayıtdıqda birgə prosesləri bağlamır.

Printf bəyanatı

Printf ifadəsinin və sprintf () funksiyasının AWK versiyaları (aşağıya bax) aşağıdakı dönüşüm spesifikasiyası formatlarını qəbul edir:

c

ASCII xarakteri. % C üçün istifadə edilən dəlil rəqəmlidirsə, bu bir xarakter kimi işlənir və çap olunur. Əks təqdirdə, dəlil bir simli olaraq qəbul edilir və bu simli yalnız ilk karakteri yazdırılır.

% d , % i

Onlu sayı (tam ədəd).

e,% E

Formanın bir üzən nöqtəsi [-] d.dddddde [+ -] dd . % E formatı E əvəzinə E istifadə edir.

% f

Formanın bir üzən nöqtəsi [-] ddd.dddddd .

% g,% G

% E və ya % f dönüşümünü istifadə edin, hansı daha qısadırsa, qeyri-dəqiq sıfırlar bastırılır. % G formatı % e yerinə % E istifadə edir.

% o

İmzalanmış səkkiz ədəd (həmçinin tamsayı).

% u imzalanmayan bir decimal ədədi (yenə bir tamsayı).

% s

Bir xarakterli simli.

% x,% X

İmzalanmış onaltılıq ədəd (tamsayı). % X formatı abcdef əvəzinə ABCDEF istifadə edir.

%%

Tək bir xarakter; heç bir arqument dəyişilmir.

İsteğe bağlı əlavə parametrlər % və nəzarət məktubları arasındadır:

saymaq $

Formatlamada bu nöqtədə sayımın argumentini istifadə edin. Buna bir mövqeləri spesifikator deyilir və AWK proqramının əsli mətnində deyil, əsasən format stringsinin tərcümə versiyalarında istifadə üçün nəzərdə tutulur. Bu gawk uzadılmasıdır.

-

İfadə öz sahəsində tərk edilməlidir.

yer

Sayısal dönüşümlər üçün, bir boşluğu olan prefiks pozitiv dəyərlər və mənfi göstəriciləri olan mənfi dəyərlər üçün.

+

Genişlik değiştiricisinden əvvəl istifadə olunan artı işareti (aşağıya baxın), formatlaşdırılacaq məlumatların olmasına baxmayaraq, həmişə sayısal dönüşüm üçün bir işarə təqdim etməyi söyləyir. + + Kosmik dəyişənləri ləğv edir.

#

Müəyyən nəzarət məktubları üçün 'alternativ forma' istifadə edin. % O üçün aparıcı sıfır təmin edin. % X% X üçün qeyri-sıx nəticə üçün aparıcı 0x və ya 0X təmin edin. % E , % E% f üçün nəticə hər zaman bir decimal nöqtəsi ehtiva edir. % G% G üçün sonrakı sıfırlar nəticədən çıxarılmır.

0

Öncəki 0 (sıfır) bayraq kimi çıxış edir, çıxışın boşluğun yerinə sıfır ilə doldurulması lazımdır. Bu hətta qeyri-rəqəmli çıxış formatları üçün də tətbiq edilir. Alanın genişliyi yazılacaq dəyərdən daha geniş olduqda bu bayraq yalnız təsir göstərir.

genişlik

Sahə bu genişliklə doldurulmalıdır. Alan adətən boşluqlarla doludur. 0 bayrağı istifadə edildiyində sıfır ilə doldurulur.

. ön

Çap edərkən istifadə etmək üçün dəqiqliyi müəyyən edən bir sıra. % E , % E% f formatları üçün bu, ondalık nöqtənin sağına yazdırılmasını istədiyiniz rəqəm sayını ifadə edir. % G% G formatları üçün, əhəmiyyətli rəqəmlərin maksimum sayını ifadə edir. % D , % o , % i , % u , % x% X formatları üçün çap üçün minimum rəqəm sayını müəyyənləşdirir. % S üçün , yazılmalı olan simvoldan ən çox sayda simvol müəyyən edir.

ANSI C printf () rutinlərinin dinamik genişliyidəqiq imkanları dəstəklənir. Genişlik və ya dəqiq spesifikasiyaların yerinə A * dəyərlərini argumentlər siyahısından printf və ya sprintf () 'a alınmasına səbəb olur. Dinamik bir genişlik və ya həssas mövqelə bir spesifikatordan istifadə etmək üçün format stringində * sayını $ verin. Məsələn, "% 3 $ * 2 $. * 1 $ s" .

Xüsusi fayl adları

I / O redirection ya çap və ya printf bir fayl, ya da bir fayl getline vasitəsilə, gawk daxili xüsusi müəyyən faylları tanıyır. Bu fayllar, gawk ana prosesindən (adətən qabıq) miras qalan fayl təsvirçiləri açmağa imkan verir. Bu fayl adları, məlumat fayllarını adlandırmaq üçün komanda xəttində də istifadə oluna bilər. Fayl adları:

/ dev / stdin

Standart giriş.

/ dev / stdout

Standart çıxış.

/ dev / stderr

Standart səhv çıxışı.

/ dev / fd / n

Açıq fayl identifikatoru ilə əlaqəli fayl.

Bunlar səhv mesajlar üçün xüsusilə faydalıdır. Misal üçün:

çap "Sən burdun!" > "/ dev / stderr"

başqa bir halda istifadə etmək istərdiniz

çap "Sən burdun!" | "pişik 1> & 2"

Aşağıdakı xüsusi fayllar | | & TCP / IP şəbəkə əlaqələri yaratmaq üçün birgə əməliyyat operatoru ilə istifadə edilə bilər.

/ inet / tcp / lport / rhost / rport

Uzaqdan liman portağında uzaqdan gələn host rhostuna yerli port lportunda TCP / IP bağlantısı üçün fayl . Sistem bir portu seçmək üçün 0 nöqtəsindən istifadə edin.

/ inet / udp / lport / rhost / rport

Oxşar, lakin TCP / IP yerinə UDP / IP istifadə edin.

/ inet / raw / lport / rhost / rport

Gələcək istifadə üçün qorunur.

Digər xüsusi fayllar , işləyən gawk prosesi haqqında məlumat əldə etməyə imkan verir. Bu fayllar artıq köhnəlmişdir. Verdikləri məlumatları əldə etmək üçün PROCINFO dizisini istifadə edin. Fayl adları:

/ dev / pid

Bu fayl oxu, mövcud prosesinin proses kimliyini decimal olaraq qaytarır, yeni bir satırla sonlanır.

/ dev / ppid

Bu fayl oxu, hazırkı prosesin üst proses identifikasiyasını decimal olaraq qaytarır, yeni bir xətt ilə sonlanır.

/ dev / pgrpid

Bu fayl oxumaq, hazırkı prosesin proses qrupu identifikasiyasını decimal olaraq qaytarır.

/ dev / user

Bu fayl oxumaq, yeni bir xətt ilə sona çatan tək bir qeyd qaytarır. Sahələr boşluqlarla ayrılır. $ 1 , getuid (2) sistem çağırışının dəyəri, $ 2 geteuid (2) sistem çağırışının dəyəri, $ 3'ün getdik (2) sistem çağırışının dəyəri, $ 4 ise getegid (2) sistem çağırışı. Əlavə sahələr varsa, onlar getgroups tərəfindən qaytarılan qrup şəxsiyyətidir (2). Bir çox qruplar bütün sistemlərdə dəstəklənməyəcək.

Nümerik funksiyalar

AWK aşağıdakı quraşdırılmış aritmetik funksiyalara malikdir:

atan2 ( y , x )

Radianlarda y / x arctangentini qaytarır.

cos ( expr )

Radianlarda olan expr kosinüsünü qaytarır.

exp ( eksp )

Eksponent funksiya.

int ( expr )

Tam nöqtəyə çatır.

giriş ( expr )

Təbii logarithm funksiyası.

rand ()

0 ilə 1 arasında təsadüfi bir sıra qaytarır.

günah ( expr )

Radianlarda olan expr sinüsünü qaytarır.

sqrt ( expr )

Kvadrat kök funksiyası.

srand ( [ expr ] )

Təsadüfi saylı generator üçün yeni bir toxum kimi istifadə edir. Heç bir expr təmin edilmirsə , günün vaxtı istifadə olunur. Dönüş dəyəri təsadüfi saylı generator üçün əvvəlki toxumdur.

String funksiyaları

Gawk aşağıdakı daxili funksiyalarına malikdir:

asort ( s [ , d ] )

Mənbə array s elementləri sayını qaytarır. S məzmunu dəyərləri müqayisə etmək üçün gawk- ın normal qaydaları ilə sıralanır və s sıralanan dəyərlərin indeksləri 1-dən başlayaraq ardıcıl tamsayılar ilə əvəz olunur. İstiqamətli təyinat array d göstərildikdə s ilk dəfə d , və sonra d sıralanır, mənbə array indeksləri dəyişməz qalır.

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

Normal ifadə r- nin oyunları üçün hədəf simli t axtarış. H h g və ya G ilə başlayan bir simvol varsa, r ilə bütün matçları əvəz edin. Əks halda, h rin hansı rəyin dəyişdirildiyini göstərən bir rəqəmdir. T təmin edilmirsə, bunun əvəzinə $ 0 istifadə olunur. Əvəzedici mətnlər daxilində, n n- in parantezlənmiş subexpress ilə uyğunlaşan mətni göstərmək üçün 1-dən 9-a qədər olan rəqəmdir. Ardıcıllıq \ 0 , xarakterli olduğu kimi, bütün uyğun mətni təmsil edir. Sub ()gsub () funksiyalarından fərqli olaraq, dəyişdirilmiş simli funksiyanın nəticəsi olaraq qaytarılır və orijinal hədəf simli dəyişdirilmir.

gsub ( r , s [ , t ] )

Sətirdə r ifadəsinə uyğun olan hər bir substrinq üçün, s s sətrini əvəz etməli və əvəzedicilərin sayını qaytarın. T təmin edilmirsə, $ 0 istifadə edin. Əvəzli mətndə bir həqiqətlə uyğunlaşdırılmış mətn əvəz olunur. Bir literal almaq üçün \ & istifadə edin. Alt () , gsub ()gensub () əvəzli mətnində '' və 'və' ters '' qaydaları üçün daha ətraflı müzakirə üçün GAWK: Effektiv AWK Proqramlaşdırma baxın.

indeks ( s , t )

D string simgesinin indeksini t sindikdə və ya t mövcud olmadığında qaytarır. (Bu, xarakter göstəricilərinin bir başlanğıc olduğunu göstərir.)

uzunluğu ( [ s ] )

Dizaynın s uzunluğunu və ya s verildiyi təqdirdə 0 $ uzunluğunu qaytarır .

matç ( s , r [ , a ] )

Normal ifadənin r meydana gəldiyi yerlərdə mövqeyini verir və ya r mövcud deyilsə 0 və RSTARTRLENGTH dəyərlərini təyin edir. Dəyişikliyin əmri ~ operator: strı ilə eynidır. Array a verildikdə, a təmizlənir və sonra n- dən elementlər r- də müvafiq parantezlənmiş subexpressedə uyğun olan s hissələrinə görə doldurulur. Bir elementin 0 elementi bütün müntəzəm ifadə r ilə eşleşen s hissəsini ehtiva edir.

split ( s , a [ , r ] )

Sütun s sütununa normal ifadəsində r-yə bölər və sahələrin sayını qaytarır. Əgər r atılırsa, FS istifadə olunur. Bir array a silinir. Bölmə yuxarıda təsvir edilən sahə parçalanma ilə eyni şəkildə davranır.

sprintf ( fmt , expr-list )

Fmt uyğun olaraq eksp -list yazdırır və nəticələnən simli qaytarır.

strtonum ( str )

Str'yi inceler ve sayısal değerini verir. Str , aparıcı 0 ilə başlayırsa, strtonum () str'in sekizli sayı olduğunu düşünür. Str , aparıcı 0x və ya 0X ilə başlayırsa, strtonum () str bir hexadecimal sayı hesab edir.

alt ( r , s [ , t ] )

Yalnız gsub () kimi , lakin yalnız ilk uyğun substrinq dəyişdirilir.

substr ( s , i [ , n ] )

I- dən başlayan ən çox n- şifahi substringə qaytarır. Əgər n nizam olunarsa, qalan hissələrdən istifadə olunur.

tolower ( str )

L string'ün bir kopyasını qaytarır, str-lərin bütün yuxarıdakı simvolları onların müvafiq alt- nümunələrinə tərcümə edir. Qeyri-alfabetik xarakterlər dəyişməz qalır.

toupper ( str )

L string'ün bir kopyasını qaytarır, str ' in alt kəlmələri müvafiq olaraq yuxarıdakı nümunələrinə tərcümə olunur. Qeyri-alfabetik xarakterlər dəyişməz qalır.

Saat funksiyaları

AWK proqramlarının əsas məqsədlərindən biri vaxt möhürü məlumatları olan log faylları işləyərkən , gawk vaxt möhürlərinin alınması və formatlanması üçün aşağıdakı funksiyaları təmin edir.

mktime ( tarihpec )

Systime () tərəfindən qaytarılan eyni formada bir müddət möhürü daxil rasgele datepec . The datepec YYYY MM DD HH MM SS [DST] formasının bir simvoludur . Dizənin məzmunu sırası ilə əsrin, ayın 1-i, ayın gününü 1-dən 31-dək, günün saatını 0-dan 23-ə, dəqiqədən isə 0-a qədər olan altı ili əks etdirir. 59, ikincisi 0'dan 60'a qədər, istənilən gün işığı qənaət bayrağı. Bu nömrələrin dəyərləri göstərilən aralıklarda olmamalıdır; məsələn, 1 saatlıq gecə yarısından 1 saat əvvəl deməkdir. İlkin sıfır Grigoriy təqvimi əvvəlki ildən 0-ə və ildən əvvəlki il -1-ə görə qəbul edilir. Vaxt yerli vaxt zonasında olacağı ehtimal edilir. Gün işığı bayrağının müsbət olduğu təqdirdə, vaxt gündüz işığı vaxtına düşür; sıfır olduqda, vaxt standart vaxt hesab olunur; və əgər mənfi (default), mktime () gün işığı vaxtının müəyyən müddət üçün qüvvədə olub olmadığını müəyyən etməyə çalışsa. Tarixi pəncərədə kifayət qədər element yoxdursa və ya nəticə çıxdıqda , mktime () -1 qaytarır.

strftime ( [ format [ , zaman damgası ]] )

Formatı dəqiqləşdirmə formatına uyğun olaraq vaxt damgasını formatlaşdırır. Zaman damgası systime () tərəfindən geri qaytarıldığı kimi eyni olmalıdır. Zaman damgası eksikse, günün cari saatı istifadə olunur. Format olmaması halında, tarixin (1) çıxışına bərabər olan bir standart format istifadə olunur. ANSI C-də strftime () funksiyasının spesifikasiyasına baxın. Qrupun ictimai domen versiyası (3) və onun üçün bir adam səhifəsi gawk ilə gəlir; bu versiya çömçə qurmaq üçün istifadə edildikdə, o adam səhifəsində təsvir edilən bütün dönüşümlər baraban üçün açıqdır .

systime ()

Günün cari vaxtını Epochdan (1970-01-01 00:00:00 UTC) POSIX sistemlərindən bəri saniyə sayını qaytarır.

Bit Manipulyasiya funksiyaları

Gawk'un 3.1 versiyasından başlayaraq, aşağıdakı bit manipulyasiya funksiyaları mövcuddur. Onlar cüt xəttli üzən nöqtə dəyərlərini imzalanmamış uzun tam ədədlərə çevirərək, əməliyyatları apararaq və nəticəni üzən nöqtəyə çevirərək işləyirlər. Funksiyalar aşağıdakılardır:

və ( v1 , v2 )

V1 və v2 tərəfindən verilən dəyərlərin bitini və dəyərini qaytarın.

compl ( val )

Valinin bitsel tamamlayıcısını qaytarın.

ltd ( val , count )

Varyanın dəyərini geri verin , sol bit sayına keçin.

və ya ( v1 , v2 )

V1 və v2 tərəfindən verilən dəyərlərdən bitsə ya da VƏ verin.

rshift ( val , count )

Valin dəyərini geri sayma bitləri ilə sağa kaydırın.

xor ( v1 , v2 )

V1 və v2 tərəfindən verilən dəyərlərdən bitsə XOR qayıt.

Beynəlxalqlaşma funksiyaları

Gawk'un 3.1 sürümünden başlayarak, AWK programınızdan, dizeleri çalıştırma zamanında çevirmek üçün aşağıdakı funksiyalardan istifadə edilə bilər. Tam məlumat üçün GAWK-a baxın : Effektiv AWK Proqramlaşdırma .

bindtextdomain ( kataloq [ , domain ] )

'' Standart '' yerlərdə (məsələn, test zamanı) yerləşməyəcək və ya ola bilməyəcək halda .mo faylları üçün gawk'un göründüyü qovluğu bildirir . Domenin "bound" olduğu qovluğu qaytarır.

Varsayılan domen TEXTDOMAIN dəyəridir . Dizine null simge ( "" ) ise, bindtextdomain () , verilen domain üçün geçerli bağlamayı döndürür .

dcgettext ( string [ , domain [ , kateqoriya ]] )

Mətn domenində domenin tərcüməini yerli kateqoriya kateqoriya üçün qaytarır. Alan üçün varsayılan değer, TEXTDOMAIN'in cari dəyəri. Kateqoriya üçün standart dəyər "LC_MESSAGES" dir.

Kateqoriya üçün bir dəyər təmin etsəniz, bu GAWK-da təsvir olunan tanınmış yerli kateqoriyalara bərabər bir simli olmalıdır : Effektiv AWK Proqramlaşdırma . Bir mətn domenini də verməlisiniz. Mövcud domendən istifadə etmək istəyirsinizsə TEXTDOMAIN istifadə edin.

dcngettext ( string1 , string2 , sayı [ , domain [ , kateqoriya ]] )

Mətn domenindəki string1simli2 ədədinin yerli kateqoriya kateqoriyası üçün tərcüməsinin sayı üçün istifadə olunan çoxlu formu qaytarır. Alan üçün varsayılan değer, TEXTDOMAIN'in cari dəyəri. Kateqoriya üçün standart dəyər "LC_MESSAGES" dir.

Kateqoriya üçün bir dəyər təmin etsəniz, bu GAWK-da təsvir olunan tanınmış yerli kateqoriyalara bərabər bir simli olmalıdır : Effektiv AWK Proqramlaşdırma . Bir mətn domenini də verməlisiniz. Mövcud domendən istifadə etmək istəyirsinizsə TEXTDOMAIN istifadə edin.

KULLANICI TƏDBİR FUNKSİYALARI

AWK-nın funksiyaları aşağıdakı kimi müəyyənləşdirilir:

funksiya adı ( parametr siyahısı ) { ifadələr }

Funksiyalar nümunələr və ya hərəkətlərdəki ifadələrdən çağırıldıqda yerinə yetirilir. Funksiya çağırışında verilmiş aktual parametrlər funksiyada elan edilmiş formal parametrləri hazırlamaq üçün istifadə olunur. Sütunlar istinad edərək qəbul edilir, digər dəyişənlər dəyərlə qəbul olunur.

Funksiyalar AWK dilinin bir hissəsi olmadığı üçün lokal dəyişənlərin müddəası olduqca sakitdir: Parametrlər siyahısında əlavə parametrlər kimi elan edilir. Konvensiya parametrlər siyahısında əlavə parametrlər ilə yerli parametrləri real parametrlərdən ayırmaqdır. Misal üçün:

funksiyası f (p, q, a, b) # a və b yerlidir {...} / abc / {...; f (1, 2); ...}

Bir funksiya çağırışında sol parantez heç bir müdaxilə olmayan ağ boşluq olmadan funksiyanı dərhal təqib etmək tələb olunur. Bu birləşmə operatoru ilə sintaktik qeyri-müəyyənlikdən qaçmaqdır. Bu məhdudiyyət yuxarıda sadalanan daxili funksiyalara tətbiq edilmir.

Funksiyalar bir-birinə zəng edə bilər və özünəməxsus ola bilər. Yerli dəyişənlər kimi istifadə edilən funksiya parametrləri null stringə sıfırlanır və funksiya çağırışı üzərinə sıfır sıfırlanır.

Bir funksiyadan bir dəyər qaytarmaq üçün qaytarma expr istifadə edin. Heç bir dəyər təmin edilmədikdə və ya funksiya sona çatdıqda '' sona çatır '' olaraq qaytarılırsa, qaytarma dəyəri müəyyən edilmir.

Əgər, - lint təmin olunarsa, gawk iş vaxtında əvəzinə yoxlama zamanı qeyri-müəyyən funksiyaları çağırır. Çalışma zamanında müəyyən edilməyən bir funksiyanı çağırmaq ölümcül bir səhvdir.

Func funksiyası yerinə funksiyası istifadə edilə bilər.

YENİ FUNKSİYALARIN DİNAMİK YÜKLƏMƏSİ

Gawk'un 3.1 sürümünden başlayarak, dinamik olaraq çalışan gawk yorumlayıcısına yeni dahili funksiyalar əlavə edə bilərsiniz. Tam məlumatlar bu dərslik səhifəsinin əhatəsindən kənarda; GAWK-ə baxın : ətraflı AWK Proqramlaşdırma .

uzadılma ( obyekt , funksiya )

Nümayəndə tərəfindən verilən paylaşılan obyekt faylını dinamik şəkildə bağlayın və başlatma yerinə yetirmək üçün bu obyektdə funksiyanı çağırın. Bunlar hər ikisi də simlər kimi təqdim edilməlidir. Funksiyası ilə qaytarılan dəyəri qaytarır.

Bu funksiya GAWK-da verilir və sənədləşdirilir : Effektiv AWK Proqramlaşdırma , lakin bu xüsusiyyət haqqında hər şey növbəti versiyada dəyişə bilər. Biz bu xüsusiyyətləri təkrarlamaq istəmədiyiniz bir şey üçün istifadə etməyinizi qətiyyətlə məsləhət görürük.

Siqnallar

pgawk iki sinyalleri qəbul edir. SIGUSR1, profil və funksiya zəng yığınını ya awkprof.out ya da hər hansı bir faylın --profile seçimi ilə adlandırıldığı profil faylına dökülməsinə səbəb olur. Daha sonra qaçmağa davam edir. SIGHUP onu profil və funksiyanı zəng yığışdırmaq və sonra çıxmaq üçün səbəb olur.

ÖRNEKLER

Bütün istifadəçilərin giriş adlarını yazdırın və sıralayın : BEGIN {FS = ":"} {print $ 1 | "sort"} Fayldakı sayları qeyd edin : {nlines ++} END {print nlines} Hər bir satırı faylındakı nömrəsinə görə: {print FNR, $ 0} Birləşdirin və satırın nömrəsi (mövzu üzrə bir varyasyon): {print NR, $ 0}

Daxililəşdirmə

String sabitləri ikiqat tirajla qoşulan simvolların ardıcıllığıdır. İngilis dilində olmayan mühitlərdə AWK proqramı içindəki doğuş təbii dil tərcüməsini tələb etmək üçün dizgələri qeyd etmək mümkündür. Belə strings AWK proqramında qeyd olunur ("` _ "). Misal üçün,

gawk 'BEGIN {print "salam, dünya"}'

həmişə salam yazır dünya . Amma,

gawk 'BEGIN {print _ "salam, dünya"}'

Fransada bonjour, monde yaza bilər.

Yerli AWK proqramı hazırlamaq və idarə etmək üçün bir neçə addım var.

1.

Mətn alanını proqramla əlaqəli bir ada təyin etmək üçün TEXTDOMAIN dəyişəninə bir dəyər təyin etmək üçün BEGIN hərəkəti əlavə edin.


BEGIN {TEXTDOMAIN = "myprog"}

Bu, gawk proqramınızla əlaqəli .mo faylını tapmaq imkanı verir. Bu addım olmadan, gawk , mesajlarınızın mətn alanını istifadə edir, ehtimal ki proqramınız üçün tərcümələr yoxdur.

2.

Öncəki alt şəffaflarla tərcümə olunmalı olan bütün simvolları qeyd edin.

3.

Lazımlıysa , proqramda dcgettext () və / və ya bindtextdomain () funksiyalarını müvafiq olaraq istifadə edin.

4.

Programınız üçün .po faylını yaratmaq üçün gawk - genie-po -f myprog.awk> myprog.po çalıştırın .

5.

Müvafiq tərcümələr təmin edin və müvafiq .mo faylını qurun və quraşdırın.

İnternasiyanın xüsusiyyətləri GAWK-da ətraflı təsvir olunur : Effektiv AWK Proqramlaşdırma .

Posix Uyumluluğu

Gawk üçün əsas məqsəd POSIX standartı ilə, eləcə də UNIX awk- ın son versiyası ilə uyğun gəlir. Bu məqsədlə, gawk AWK kitabında təsvir olunmayan, lakin awk- nin Bell Laboratories versiyasının bir hissəsi olan və POSIX standartında olan aşağıdakı istifadəçi görünən xüsusiyyətləri birləşdirir.

Kitabda, komik satır dəyişən tapşırıqın, awk başqa bir səbəbdən BEGIN blokunun icra edildiyi bir fayl olaraq açılacağı baş verir. Lakin, əvvəlki tətbiqlərdə, belə bir tapşırıq hər hansı bir fayl adından əvvəl ortaya çıxdıqda, tapşırıq BEGIN blokunun işə salınmasından əvvəl baş verəcəkdir. Uygulamalar, bu `` özelliğine bağlıdır. '' Awk 'nin dokümantasyonuna uyğun olaraq değiştiğinde , eski davranışlardan bağımsız olan uygulamaları barındırmak üçün proqram uygulaması eklenmeden önce değişkenleri atama seçeneği. (Bu xüsusiyyət həm Bell Laboratories və GNU developers tərəfindən razılaşdırılmışdı.)

Tətbiq olunan xüsusi xüsusiyyətlər üçün -W variantları POSIX standartından ibarətdir.

Arxivləri işləyərkən , gawk , argümanların sonunu siqnal etmək üçün xüsusi bir seçimdən istifadə edir. Uyğunluq rejimində, xəbərdarlıq edir, amma başqa şəkildə qeyri-müəyyən variantları görmür. Normal fəaliyyətdə belə arqumentlər AWK proqramına keçirilmək üçün verilir.

AWK kitabında srand () funksiyasının qaytarılması dəyəri müəyyən edilmir . POSIX standartı istifadə etdiyimiz toxumu qaytarır, təsadüfi sayda ardıcıllığı izləmək üçün imkan verir. Buna görə də govkdə srand () də mövcud toxumunu qaytarır.

Digər yeni xüsusiyyətlər aşağıdakılardır: Bir çox variantlardan istifadə etmək (MKS awk- dən); ENVIRON array; \ a\ v qaçış ardıcıllığı (ilk olaraq gawk və Bell Laboratories versiyasına qidalanır); tolower ()toupper () quraşdırılmış funksiyaları (Bell Laboratories versiyasından); və printf- də ANSI C dönüşüm spesifikasiyası (Bell Laboratories versiyasında ilk olaraq).

Tarixi xüsusiyyətlər

Gawk dəstəkləyən tarixi AWK tətbiqlərinin iki xüsusiyyəti var. Birincisi, uzunluğu () funksiyasını yalnız arqumentlə deyil, hətta parantez olmadan da çağırmaq mümkündür! Beləliklə,

a = uzunluq # Müqəddəs Alqol 60, Batman!

hər ikisi ilə eynidır

a = uzunluğu ()
a = uzunluğu ($ 0)

Bu xüsusiyyət POSIX standartında '' deprecated '' kimi qeyd olunur və command - line komanda xəttində göstərildiyi təqdirdə, gawk onun istifadəsi barədə xəbərdarlıq verir.

Başqa bir xüsusiyyət bədənin xaricindəki davamı və ya ara bəyanatlarının bir müddət , istifadə və ya loopun istifadəsidir. Ənənəvi AWK tətbiqləri bu cür istifadəni növbəti bəyanata bərabər tutdu. Gawk , bu tətbiqdə ənənəvi müəyyənləşdirildikdə onu dəstəkləyir.

GNU Extensions

Gawk , POSIX awk üçün bir neçə uzantıya malikdir. Onlar bu bölmədə təsvir olunur. Burada təsvir edilən bütün uzantılar - ənənəvi seçim ilə gawk-i çağırmaqla əlil ola bilər.

POSIX awk-də şabalığın aşağıdakı xüsusiyyətləri mövcud deyildir .

*

-f variantında olan fayllar üçün heç bir yol axtarışı həyata keçirilmir. Buna görə AWKPATH ətraf mühit dəyişkənliyi xüsusi deyil.

*

Xilasetmə sırası. ( Posix ilə əlil olanlar .)

*

Fflush () funksiyası. ( Posix ilə əlil olanlar .)

*

Sonra xətləri davam etdirmə qabiliyyəti ?:. ( Posix ilə əlil olanlar .)

*

AWK proqramlarında səkkiz və onaltılıq sabitlər.

*

ARGIND , BINMODE , ERRNO , LINT , RTTEXTDOMAIN dəyişənləri xüsusi deyil.

*

IGNORECASE dəyişən və yan təsiri mövcud deyil.

*

FIELDWIDTHS dəyişən və sabit genişlikli sahədə bölmək.

*

PROCINFO array mövcud deyil.

*

RS-nin müntəzəm ifadə kimi istifadə edilməsi.

*

I / O redirection üçün xüsusi fayl adları tanınmır.

*

İşbirliyi prosesi yaratmaq üçün | & operator.

*

Fərdi simvolları null simli FS- nin dəyəri kimi ayırmaq və üçüncü arqument () bölmək üçün qabiliyyəti.

*

Close () funksiyasına isteğe bağlı ikinci arqument.

*

Match () funksiyasına isteğe bağlı üçüncü arqument.

*

Printfsprintf () ilə mövqeləri göstəriciləri istifadə etmək imkanı.

*

Serialın bütün məzmununu silmək üçün silmək serialının istifadəsi.

*

Cari faylın işlənməsindən imtina etmək üçün növbəti faylın istifadəsi.

*

() , Strxtime () , strtonum () , systime () , () , () , benttextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime ()xor () funksiyalarından ibarətdir.

*

Yerləşdirilən lentlər.

*

Extension () funksiyası ilə dinamik olaraq yeni quraşdırılmış funksiyaları əlavə edin.

AWK kitabında close () funksiyasının qaytarılması dəyəri müəyyən edilmir. Gawk 'un close () , sırasıyla bir çıkış faylını və ya boru bağlandığında, fclose (3), və ya (3) dən dəyərini qaytarır. Giriş borusunu bağladıqda prosesin çıxış vəziyyətini qaytarır. Adı verilən fayl, boru və ya birgə prosesi bir redaktə ilə açılmadıqda, qaytarma dəyəri -1 olur.

Gawk - ənənəvi seçim ilə çağırıldığında, -F variantına fs argumenti `` t '', sonra FS sekme xarakterinə təyin edilir. Qeyd edək ki, gawk -F \ t yazaraq ... qəfildən "` t "yazmaq üçün səbəb olur və" F " seçimi üçün" \ t "keçmir. Bu olduqca çirkin bir xüsusi vəziyyət olduğundan, u mənim davranış deyil. - Posix'in göstərildiyi halda bu davranış da baş vermir. Alan ayırıcı kimi həqiqətən bir sekme xarakterini almaq üçün, tək quotes istifadə etmək yaxşıdır: gawk -F '\ t' ....

Lp , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , talk , motd , pulsuz , lpr , execl , fdisk , at , kim , iwconfig , ifconfig , vgdisplay , açıq , lsmod , ntohs , mailq , kill , wtmp