Linux Komutunu Öğrenin - gawk

isim

gawk - desen tarama ve işleme dili

özet

gawk [POSIX veya GNU stil seçenekleri] -f program dosyası [ - ] dosyası ...
gawk [POSIX veya GNU stil seçenekleri] [ - ] program-metin dosyası ...

pgawk [POSIX veya GNU stil seçenekleri] -f program dosyası [ - ] dosyası ...
pgawk [POSIX veya GNU stil seçenekleri] [ - ] program-metin dosyası ...

Açıklama

Gawk , GNU Projesi'nin AWK programlama dilinin uygulanmasıdır. POSIX 1003.2 Komut Dili ve Yardımcı Programları Standardında dilin tanımına uygundur. Bu sürüm sırayla, AWK Programlama Dili , Aho, Kernighan ve Weinberger tarafından yapılan açıklamaya dayanarak, UNIX awk'nin System V Release 4 sürümünde bulunan ek özellikler ile ilgilidir. Gawk ayrıca daha yeni Bell Laboratories awk uzantıları ve bir dizi GNU'ya özel uzantı sağlar.

Pgawk , gawk'in profilleme sürümüdür. Programların daha yavaş çalışması dışında gawk için her şekilde aynıdır ve bittiğinde awkprof.out dosyasında otomatik olarak bir yürütme profili oluşturur. Aşağıdaki --profile seçeneğine bakın.

Komut satırı, kendini gösterme seçeneklerinden, AWK program metninden (eğer -f veya --file seçenekleri üzerinden sağlanmadıysa) ve ARGC ve ARGV önceden tanımlanmış AWK değişkenlerinde kullanılabilir olan seçeneklerden oluşur.

Seçenek Biçimi

Gawk seçenekleri, geleneksel POSIX bir harf seçeneği veya GNU stili uzun seçenekler olabilir. POSIX seçenekleri tek bir `` - 'ile başlarken, uzun seçenekler `` -' 'ile başlar. Hem GNU'ya özgü özellikler hem de POSIX tarafından sağlanan özellikler için uzun seçenekler sağlanmıştır.

POSIX standardını takiben, gawk'a özgü seçenekler -W seçeneğine argümanlar aracılığıyla sağlanır. Çoklu- W seçenekleri sağlanabilir Her bir -W seçeneğinin aşağıda detaylı olarak açıklandığı gibi uzun bir seçeneği vardır. Uzun seçeneklere yönelik argümanlar ya seçenekle birlikte bir = işaretiyle birleştirilir, araya giren boşluklar olmadan veya bir sonraki komut satırı argümanında sağlanabilir. Kısaltmalar benzersiz kaldığı sürece uzun seçenekler kısaltılabilir.

Seçenekler

Gawk alfabetik olarak listelenen aşağıdaki seçenekleri kabul eder.

-F fs

--alan-ayırıcı fs Giriş alanı ayırıcısı için fs kullanın ( FS önceden tanımlanmış değişkeninin değeri).

-v var = val

- atama var = val Programın çalıştırılmasından önce, değer değişkenini değişken değişkenine atayın. Bu değişken değerler bir AWK programının BEGIN bloğunda kullanılabilir.

-f program dosyası

- dosya programı dosyası AWK program kaynağını, ilk komut satırı bağımsız değişkeninden ziyade dosya program dosyasından okuyun. Birden çok f (veya - dosya ) seçenekleri kullanılabilir.

-mf NNN

-mr NNN NNN değerine çeşitli bellek limitleri ayarlayın. F bayrağı maksimum alan sayısını belirler ve r bayrağı maksimum kayıt boyutunu ayarlar. Bu iki bayrak ve -m seçeneği UNIX awk'nin Bell Laboratories araştırma versiyonudur. Gawk'un önceden tanımlanmış sınırları olmadığı için gawk tarafından göz ardı edilirler.

-W uyumlu

-W geleneksel

--compat

--traditional Uyumluluk modunda çalıştırın. Uyumluluk modunda, gawk UNIX awk ile aynı şekilde davranır; GNU'ya özgü uzantıların hiçbiri tanınmadı. Bu seçeneğin diğer formları üzerinde --traditional kullanımı tercih edilir. Daha fazla bilgi için aşağıdaki GNU UZANTILARINA bakın.

-W copyleft

-W telif hakkı

--copyleft

- copyright Standart çıktıdaki GNU telif hakkı bilgi mesajının kısa versiyonunu yazdırın ve başarıyla çıkın.

-W döküm değişkenleri [ = dosya ]

--dump-variables [ = file ] Sıralı bir global değişkenler listesi, bunların türleri ve son değerleri dosyaya yazdır. Hiçbir dosya sağlanmazsa, gawk geçerli dizinde awkvars.out adlı bir dosya kullanır.

Tüm global değişkenlerin bir listesini yapmak, programlarınızdaki yazım hatalarını aramanın iyi bir yoludur. Çok sayıda işlevi olan büyük bir programınız varsa ve bu özelliği, işlevlerin yanlışlıkla yerel olmasını istediğiniz genel değişkenleri kullanmadığından emin olmak istiyorsanız, bu seçeneği de kullanırsınız. (Bu, i , j , vb. Gibi basit değişken isimlerle yapmak için özellikle kolay bir hatadır.)

-W yardım

-W kullanım

--yardım et

--usage Standart çıktıdaki mevcut seçeneklerin nispeten kısa bir özetini yazdırın. ( GNU Kodlama Standartlarına göre , bu seçenekler hemen, başarılı bir çıkışa neden olur.)

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

--lint [ = fatal ] Şüpheli veya diğer AWK uygulamalarına taşınabilir olmayan yapılar hakkında uyarılar sağlayın. İsteğe bağlı ölümcül bir argümanla, tint uyarıları ölümcül hatalara dönüşür. Bu ciddi olabilir, ancak kullanımı kesinlikle daha temiz AWK programlarının geliştirilmesini teşvik edecektir.

-W lint-eski

--lint-eski Unix awk'nin orijinal sürümüne uygun olmayan yapılar hakkında uyarılar sağlayın.

-W gen-po

--gen-po AWK programını tarayın ve ayrıştırın ve programdaki tüm yerelleştirilebilir dizeler için girdilerle standart çıktıda bir GNU .po format dosyası oluşturun. Programın kendisi yürütülmez. .po dosyaları hakkında daha fazla bilgi için GNU gettext dağıtımına bakın.

-W ondalık olmayan veriler

- ondalık-ondalık veri Giriş verisinde sekizli ve onaltılık değerleri tanır. Bu seçeneği büyük dikkatle kullanın!

-W posix

--posix Bu, aşağıdaki ek kısıtlamalarla birlikte uyumluluk modunu açar :

*

\ x escape dizileri tanınmadı.

*

FS tek bir alana ayarlandığında, yalnızca boşluk ve sekme alan ayırıcılar gibi davranır, newline yapmaz.

*

Sonra çizgiye devam edemez misin? ve :.

*

Anahtar kelime işlevi için eşanlamlı func tanınmıyor.

*

** ve ** = operatörleri ^ ve ^ = yerine kullanılamaz.

*

Fflush () işlevi kullanılamıyor.

-W profili [ = prof_file ]

--profile [ = prof_file ] Profil verilerini prof_file'a gönderin . Varsayılan awkprof.out'tur . Gawk ile çalıştırıldığında, profil programın sadece “güzel basılı” versiyonudur. Pgawk ile çalıştırıldığında, profil sol kenar boşluğunda programdaki her ifadenin yürütme sayılarını ve her kullanıcı tanımlı işlev için işlev çağrısı sayımlarını içerir.

-W tekrar aralığı

--re-interval Düzenli ifade eşleştirmesinde aralık ifadelerinin kullanımını etkinleştirin (aşağıdaki Normal İfadeler'e bakın). Aralık ifadeleri geleneksel olarak AWK dilinde mevcut değildi. POSIX standardı, awk ve egrep'leri birbirine uyumlu hale getirmek için bunları ekledi. Ancak, kullanımlarının eski AWK programlarını kırması muhtemeldir, bu nedenle gawk yalnızca bu seçenekle istendiğinde veya --posix belirtildiğinde bunları sağlar.

-W kaynak program metni

- kaynak program metni AWK programı kaynak kodu olarak program metni kullanın. Bu seçenek, kütüphane fonksiyonlarının ( -f ve --file seçenekleri ile) komut satırına girilen kaynak kodu ile kolay bir şekilde karıştırılmasını sağlar. Kabuk betiklerinde kullanılan orta ve büyük boyutlu AWK programları içindir.

-W versiyonu

- Standart çıktıdaki gawk'ın bu özel kopyası için sürüm yazdırma bilgisi. Bu, esas olarak, Free Software Foundation'ın dağıtımı ne olursa olsun, sisteminizdeki gawk'in geçerli kopyasının güncel olup olmadığını bilmek için kullanışlıdır. Bu, hataları bildirirken de kullanışlıdır. ( GNU Kodlama Standartlarına göre , bu seçenekler hemen, başarılı bir çıkışa neden olur.)

- Seçeneklerin sonunu işaretleyin. Bu, AWK programının kendisinde bir `` - 'ile başlaması için daha fazla argümana izin vermek için kullanışlıdır. Bu, çoğunlukla diğer POSIX programlarının çoğunda kullanılan argüman ayrıştırma sözleşmesiyle tutarlılık içindir.

Uyumluluk modunda, diğer seçenekler geçersiz olarak işaretlenir, ancak aksi halde göz ardı edilir. Normal çalışmada, program metni sağlandığı sürece, bilinmeyen seçenekler, işlem için ARGV dizisindeki AWK programına iletilir . Bu, AWK programlarını `#! '' Çalıştırılabilir yorumlayıcı mekanizması aracılığıyla çalıştırmak için özellikle kullanışlıdır.

AWK PROGRAMI UYGULAMA

AWK programı bir dizi desen eylemi ifadesi ve isteğe bağlı işlev tanımlarından oluşur.

desen { eylem bildirimleri }

işlev adı ( parametre listesi ) { statement }

Gawk ilk önce program kaynağını, eğer argümanlardan -source'a ya da komut satırındaki ilk opsiyonel olmayan argümandan, belirtilmişse, program-dosya (lar) ından okur. -f ve --source seçenekleri komut satırında birden çok kez kullanılabilir. Gawk , program metnini, tüm program dosyası ve komut satırı kaynak metinleri bir araya getirilmiş gibi okur. Bu, onları kullanan her yeni AWK programına dahil etmeden AWK işlevlerinin kitaplıklarını oluşturmak için kullanışlıdır. Ayrıca, kütüphane işlevlerini komut satırı programları ile karıştırma olanağı sağlar.

Ortam değişkeni AWKPATH , -f seçeneği ile adlandırılan kaynak dosyaları bulunurken kullanılacak bir arama yolu belirtir. Bu değişken yoksa, varsayılan yol ".: / Usr / local / share / awk" şeklindedir . (Gerçek dizin, gawk'un nasıl kurulduğuna ve kurulduğuna bağlı olarak değişebilir.) -f seçeneğine verilen bir dosya adı bir `` / '' karakteri içeriyorsa, yol araması yapılmaz.

Gawk, AWK programlarını aşağıdaki sırayla yürütür. İlk olarak, -v seçeneği ile belirtilen tüm değişken atamalar yapılır. Ardından, gawk programı dahili bir form halinde derler. Daha sonra gawk , kodu BEGIN blok (lar) ında (varsa) yürütür ve ardından ARGV dizisinde adlandırılan her dosyayı okumaya devam eder. Komut satırında bir dosya yoksa, gawk standart girişi okur.

Komut satırında bir dosya adı var = val biçiminde ise, değişken atama olarak değerlendirilir. Değişken var val valenti atanacaktır. (Bu, herhangi bir BEGIN bloğu / blokları çalıştırıldıktan sonra olur.) Komut satırı değişken ataması, değerlerin, alanların ve kayıtların nasıl kırıldığını kontrol etmek için AWK'nin değişkenlerine dinamik olarak atanması için en kullanışlıdır. Tek bir veri dosyası üzerinde birden fazla geçişin gerekip gerekmediğini kontrol etmek için de yararlıdır.

Belirli bir ARGV öğesinin değeri boşsa ( "" ), gawk bunu atlar.

Girişteki her kayıt için, AWW programındaki herhangi bir modelle eşleşip eşleşmediğini görmek için gawk testleri. Kaydın eşleştiği her desen için, ilişkili eylem yürütülür. Modeller programda ortaya çıkma sırasına göre test edilir.

Son olarak, tüm giriş bittikten sonra, gawk , END blok (lar) ında (varsa) kodu çalıştırır.

Değişkenler, Kayıtlar ve Alanlar

AWK değişkenleri dinamiktir; İlk kullanıldığında var olurlar. Değerleri, nasıl kullanıldığına bağlı olarak, kayan nokta sayıları veya dizeleri veya her ikisi de vardır. AWK ayrıca bir boyutlu diziye sahiptir; Birden çok boyuta sahip diziler simüle edilebilir. Önceden tanımlanmış birçok değişken bir program çalışması olarak ayarlanır; Bunlar gerektiği gibi açıklanacak ve aşağıda özetlenecektir.

kayıtlar

Normal olarak, kayıtlar yeni satır karakterleriyle ayrılır. Yerleşik değişken RS'ye değerler atayarak kayıtların nasıl ayrılacağını kontrol edebilirsiniz. RS herhangi bir karakter ise, bu karakter kayıtları ayırır. Aksi halde, RS normal bir ifadedir. Bu normal ifadeyle eşleşen girdideki metin kaydı ayırır. Bununla birlikte, uyumluluk modunda, kayıt ayırmak için dize değerinin yalnızca ilk karakteri kullanılır. RS boş dizgiye ayarlanırsa, kayıtlar boş satırlarla ayrılır. RS , boş dizgeye ayarlandığında, satırsonu karakteri, FS değeri ne olursa olsun, her zaman bir alan ayırıcısı olarak işlev görür.

Alanlar

Her bir girdi kaydı okunduğunda, gawk , alan ayırıcı olarak FS değişkeninin değerini kullanarak kaydı alanlara böler. FS tek bir karakter ise, alanlar bu karakterle ayrılır. FS boş dizgeyse, her bir karakter ayrı bir alan olur. Aksi halde, FS'nin tam bir düzenli ifade olması beklenir. FS'nin tek bir boşluk olduğu özel durumda, alanlar boşluklar ve / veya sekmeler ve / veya satırsonları ile ayrılır. (Ama aşağıdaki --posix tartışmasına bakınız). NOT: IGNORECASE değeri (aşağıya bakınız) ayrıca FS normal bir ifade olduğunda alanların nasıl bölüneceğini ve RS normal bir ifade olduğunda kayıtların nasıl ayrıldığını etkiler.

FIELDWIDTHS değişkeni boşluk ayrılmış bir sayı listesine ayarlanmışsa, her alanın sabit genişliğe sahip olması beklenir ve gawk belirtilen genişlikleri kullanarak kaydı ayırır. FS'nin değeri göz ardı edilir. FS'ye yeni bir değer atamak FIELDWIDTHS kullanımını geçersiz kılar ve varsayılan davranışı geri yükler.

Giriş kaydındaki her alan, $ 1 , $ 2 , vb. Konumuna göre referans alınabilir. Bütün kayıt $ 0'dır . Alanların sabitler tarafından referans alınmasına gerek yoktur:

n = 5
$ n yazdır

giriş kaydındaki beşinci alanı yazdırır.

Değişken NF , giriş kaydındaki toplam alan sayısına ayarlanır.

Varolan olmayan alanlara yapılan referanslar (yani $ NF'den sonraki alanlar) boş dizgeyi üretir. Bununla birlikte, varolan olmayan bir alana (örneğin, $ (NF + 2) = 5 ) atanması, NF değerini artırır, null dizgisiyle değer olarak herhangi bir araya giren alanları oluşturur ve $ 0 değerinin yeniden hesaplanmasına neden olur. OFS'nin değeri ile ayrılan alanlar. Negatif numaralı alanlara yapılan referanslar ölümcül bir hataya neden olur. NF'nin azaltılması, kaybedilecek yeni değerin üstündeki alanların değerlerine ve OFS'nin değeriyle ayrılan alanların yeniden hesaplanması için $ 0 değerinin neden olmasına neden olur.

Varolan bir alana değer atamak, $ 0 referansı verildiğinde tüm kaydın yeniden oluşturulmasına neden olur. Benzer şekilde, 0 $ ' a bir değer atamak, kayıtların yeniden düzenlenmesine ve alanlara yeni değerler oluşturulmasına neden olur.

Yerleşik Değişkenler

Gawk'un yerleşik değişkenleri:

argc

Komut satırı argümanlarının sayısı ( gawk için seçenekler veya program kaynağı içermez).

ARGIND

Işlenen geçerli dosyanın ARGV dizin.

ARGV

Komut satırı argüman dizisi. Dizi 0'dan ARGC - 1'e endekslenmiştir. ARGV'nin içeriğinin dinamik olarak değiştirilmesi, veriler için kullanılan dosyaları kontrol edebilir.

BINMODE

POSIX olmayan sistemlerde, tüm dosya G / Ç'leri için `` ikili '' modunun kullanılmasını belirtir. 1, 2 veya 3 sayısal değerleri, giriş dosyalarının, çıktı dosyalarının veya tüm dosyaların sırasıyla ikili G / Ç kullanması gerektiğini belirtir. "R" veya "w" nin dize değerleri, giriş dosyalarının veya çıktı dosyalarının sırasıyla, ikili G / Ç'yi kullanması gerektiğini belirtir. "Rw" veya "wr" öğelerinin dize değerleri, tüm dosyaların ikili G / Ç kullanması gerektiğini belirtir. Başka bir dize değeri "rw" olarak kabul edilir, ancak bir uyarı mesajı oluşturur.

CONVFMT

Varsayılan olarak, "% .6g" sayıları için dönüşüm biçimi.

ENVIRON

Mevcut ortamın değerlerini içeren bir dizi. Dizi, ortam değişkenleri tarafından endekslenir, her eleman bu değişkenin değeridir (örneğin, ENVIRON ["HOME"] / home / arnold olabilir ). Bu dizinin değiştirilmesi, yeniden yönlendirme veya system () işlevi aracılığıyla ortaya çıkan programların gördüğü ortamı etkilemez.

ERRNO

Getline için bir yönlendirme, getline okuması sırasında veya close () sırasında bir sistem hatası oluşursa, ERRNO , hatayı açıklayan bir dize içerir. Değer, İngilizce olmayan bölgelerde çeviri işlemine tabidir.

FIELDWIDTHS

Beyaz boşluklu alan genişliği listesi. Ayarlandığında, gawk , alan ayırıcısı olarak FS değişkeninin değerini kullanmak yerine girişi sabit genişlik alanlarına ayrıştırır.

DOSYA ADI

Mevcut giriş dosyasının adı. Komut satırında hiçbir dosya belirtilmediyse, FILENAME değeri `` - ''. Ancak, FILENAME BEGIN bloğu içinde tanımlanmamıştır ( getline ile ayarlanmadığı sürece).

FNR

Mevcut giriş dosyasındaki giriş kayıt numarası.

FS

Giriş alanı ayırıcısı, varsayılan olarak bir boşluktur. Yukarıdaki Alanları .

IGNORECASE

Tüm düzenli ifade ve dize işlemlerinin büyük / küçük harf duyarlılığını kontrol eder. Eğer IGNORECASE sıfırdan farklı bir değere sahipse, o zaman dizge karşılaştırması ve desen eşleştirmesi, FS ile alan bölünmesi, RS ile ayırma, ~ ve ! ~ Ile düzenli ifade eşleşmesi ve gensub () , gsub () , index () Normal ifade işlemleri yaparken, match () , split () ve sub () yerleşik işlevleri, tümü yok sayılır. NOT: Dizi aboneliği etkilenmez, asort () işlevi de yoktur.

Böylece, IGNORECASE sıfıra eşit değilse, / aB / "ab" , "aB" , "Ab" ve "AB" dizelerinin hepsiyle eşleşir. Tüm AWK değişkenlerinde olduğu gibi, IGNORECASE'in başlangıç ​​değeri sıfırdır, dolayısıyla tüm normal ifade ve dize işlemleri normal olarak büyük / küçük harfe duyarlıdır. Unix'in altında, ISO 8059-1 Latin-1 karakter seti, durumu göz ardı ederken kullanılır.

LINT

AWK programından --lint seçeneğinin dinamik kontrolünü sağlar. True olduğunda, gawk tint uyarıları yazdırır. Yanlış olduğunda değil. "Ölümcül" dize değeri atanırken, lint uyarıları tam olarak --lint = ölümcül gibi ölümcül hatalara dönüşür . Başka herhangi bir gerçek değer sadece uyarıları yazdırır.

NF

Mevcut giriş kaydındaki alan sayısı.

NR

Şimdiye kadar görülen toplam girdi kaydı sayısı.

OFMT

Varsayılan olarak, "% .6g" sayıları için çıktı biçimi.

OFS

Çıkış alanı ayırıcısı, varsayılan olarak bir boşluktur.

ORS

Çıkış kayıt ayırıcısı, varsayılan olarak bir satırsonu.

PROCINFO

Bu dizinin öğeleri, çalışan AWK programıyla ilgili bilgilere erişim sağlar. Bazı sistemlerde, dizide, " n " grubu " n " , " n " için " n " , işlemin sahip olduğu tamamlayıcı grupların sayısı olan elemanlar olabilir. Bu elemanları test etmek için in operatörünü kullanın. Aşağıdaki unsurların mevcut olması garanti edilmektedir:

PROCINFO [ "egid"]

getegid (2) sistem çağrısı değeri.

PROCINFO [ "euid"]

geteuid (2) sistem çağrısı değeri.

PROCINFO [ "fs"]

FS ile alan bölme etkisinde ise "FS" veya FIELDWIDTHS ile ayrılan alanın etkin olması durumunda "FIELDWIDTHS" .

PROCINFO [ "gid"]

getgid (2) sistem çağrısı değeri.

PROCINFO [ "pgrpid"]

Mevcut işlemin işlem grubu kimliği.

PROCINFO [ "PID"]

Mevcut sürecin işlem kimliği.

PROCINFO [ "ppid"]

Mevcut işlemin ana işlem kimliği.

PROCINFO [ "uid"]

getuid (2) sistem çağrısı değeri.

RS

Giriş kayıt ayırıcısı, varsayılan olarak bir satırsonu.

RT

Kayıt sonlandırıcı. Gawk , RT ile belirtilen karakter veya normal ifadeyle eşleşen giriş metnini RT olarak ayarlar.

RSTART

Eşleme () ile eşleşen ilk karakterin dizini; 0 eşleşme yoksa. (Bu, karakter indekslerinin biriyle başladığını gösterir.)

RLENGTH

Eşleşmenin () eşleştiği dizenin uzunluğu; -1 eşleşme yoksa.

SUBSEP

Karakter, birden çok alt diziyi dizi öğelerinde, varsayılan olarak "\ 034" olarak ayırmak için kullanılır.

TEXTDOMAIN

AWK programının metin alanı; Programın dizeleri için yerelleştirilmiş çevirileri bulmak için kullanılır.

Diziler

Diziler, köşeli parantezler ( [ ve ] ) arasında bir ifade ile abone edilir. İfade bir ifade listesi ( expr , expr ...) ise, dizi alt dizisi, SUBSEP değişkeninin değeriyle ayrılan her ifadenin (dizgi) değerinin birleşiminden oluşan bir dizedir. Bu tesis, çok boyutlu dizileri simüle etmek için kullanılır. Örneğin:

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

"merhaba, world \ n" dizesini "A \ 034B \ 034C" dizesiyle dizine eklenmiş olan x dizisinin öğesine atar . AWK'daki tüm diziler ilişkilendirilebilir, yani dize değerleri ile indekslenir.

Özel operatör , bir dizinin belirli bir değerden oluşan bir dizinin olup olmadığını görmek için bir if veya while ifadesinde kullanılabilir.

eğer (dizide val) print array [val]

Dizide birden çok abonelik varsa, dizide (i, j) kullanın.

Yapı içerisinde ayrıca bir dizinin tüm elemanları üzerinde yinelemek için bir for döngüsünde kullanılabilir.

Bir öğe, silme ifadesini kullanarak bir diziden silinebilir. Silme ifadesi, bir dizinin tüm içeriğini silmek için de kullanılabilir, sadece bir dizinin olmadığı dizinin ismini belirterek.

Değişken Yazma ve Dönüştürme

Değişkenler ve alanlar (kayan nokta) sayıları veya dizeleri veya her ikisi olabilir. Bir değişkenin değeri nasıl yorumlanır, içeriğine bağlıdır. Bir sayısal ifadede kullanılırsa, bir sayı olarak ele alınır, bir dizge olarak kullanılırsa bir dizge olarak ele alınır.

Bir değişkenin bir sayı olarak ele alınmasını zorlamak için ona 0 ekleyin; bir dize olarak ele alınmasını zorlamak için boş dizeyle birleştirin.

Bir dize bir sayıya dönüştürülmesi gerektiğinde, dönüştürme strtod (3) kullanılarak gerçekleştirilir. Bir sayı, CONVFMT değerinin sprintf (3) için bir biçim dizesi olarak argüman olarak değişkenin sayısal değeri kullanılarak bir dizgeye dönüştürülür. Bununla birlikte, AWK'daki tüm sayılar kayan nokta olsa bile, integral değerler her zaman tamsayı olarak dönüştürülür. Böylece verilen

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

Değişken b "12" ve "12.00" değil bir dize değerine sahiptir.

Gawk, karşılaştırmaları aşağıdaki gibi gerçekleştirir: İki değişken sayısalsa, sayısal olarak karşılaştırılır. Bir değer sayısalsa ve diğeri bir "sayısal sayısal" olan bir dize değerine sahipse, karşılaştırmalar da sayısal olarak yapılır. Aksi takdirde, sayısal değer bir dizeye dönüştürülür ve bir dizge karşılaştırması gerçekleştirilir. İki dizi, elbette, diziler olarak karşılaştırılır. POSIX standardı, sabit dizeleri bile olsa, her yerde `sayısal sayısal 'kavramını uygular. Ancak, bu açıkça yanlıştır ve gawk bunu yapmaz. (Neyse ki, bu standardın bir sonraki sürümünde düzeltildi.)

"57" gibi dize sabitlerinin sayısal dizeler olmadığını, dizge sabitleri olduklarını unutmayın. "Sayısal dizge" fikri yalnızca alanlar, getline girişi, FILENAME , ARGV öğeleri, ENVIRON öğeleri ve sayısal dizeler olan split () tarafından oluşturulan bir dizinin öğeleri için geçerlidir. Temel fikir, kullanıcı girdisinin ve sayısal görünen yalnızca kullanıcı girişinin bu şekilde ele alınması gerektiğidir.

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

Sekizli ve Onaltılık Sabitler

Gawk sürüm 3.1 ile başlayarak, AWK program kaynak kodunuzda C stili sekizlik ve onaltılık sabitleri kullanabilirsiniz. Örneğin, sekizlik değeri 011 ondalık 9'a eşittir ve onaltılık değer 0x11 ondalık 17'ye eşittir.

Dize Sabitler

AWK'daki dize sabitleri, çift tırnak ( " ) arasına eklenen karakter dizileridir. Dizeler içinde, bazı çıkış dizileri C'deki gibi tanınır. Bunlar:

\\

Bir harfli ters eğik çizgi.

\ a

"Uyarı" karakteri; genellikle ASCII BEL karakteri.

\ b

geri al.

\ f

form besleme.

\ n

Yeni hat.

\ r

satırbaşı.

\ t

yatay sekme.

\ v

dikey sekme.

\ x altı basamaklı

\ X'i izleyen onaltılık basamak dizesiyle temsil edilen karakter. ANSIC'te olduğu gibi, tüm onaltılı basamaklar kaçış dizisinin bir parçası olarak kabul edilir. (Bu özellik bize, komite tarafından dil tasarımı hakkında bir şeyler söylemelidir.) Örneğin, "\ x1B" , ASCIIESC (kaçış) karakteridir.

\ ddd

Sekizli basamakların 1-, 2- veya 3 basamaklı sırası ile temsil edilen karakter. Örneğin, "\ 033" ASCII ESC (kaçış) karakteridir.

\ c

Yazılı karakter c .

Çıkış sıraları, sabit düzenli ifadelerde de kullanılabilir (ör. / [\ T \ f \ n \ r \ v] / boşluk karakterleriyle eşleşir).

Uyumluluk modunda, sekizli ve onaltılı kaçış dizileriyle temsil edilen karakterler, normal ifade sabitlerinde kullanıldığında tam anlamıyla tedavi edilir. Böylece / a \ 52b / / a \ * b / ile eşdeğerdir.

Kalıplar ve Eylemler

AWK, çizgi odaklı bir dildir. Desen önce gelir ve sonra eylem. Eylem ifadeleri { ve } ile eklenmiştir. Desen eksik olabilir veya eylem eksik olabilir, ancak elbette ikisini de değil. Model eksikse, her giriş kaydı için eylem gerçekleştirilir. Eksik bir eylem eşdeğerdir

{print}

tüm rekoru basar.

Yorumlar, `# '' karakteri ile başlar ve çizginin sonuna kadar devam eder. İfadeleri ayırmak için boş satırlar kullanılabilir. Normal olarak, bir ifade bir satırsonuyla sona erer, ancak, bu bir ``, '', { , ? Ile biten satırlar için geçerli değildir. , : , && veya veya || . Aynı zamanda biten satırlar ya da beyanları otomatik olarak aşağıdaki satırda devam eder. Diğer durumlarda, bir satır, bir 'ile sonlandırılarak devam ettirilebilir, bu durumda yeni satır dikkate alınmaz.

Çoklu ifadeler, bir ``; '' ile ayırarak bir satıra yerleştirilebilir. Bu, bir patern eylem çiftinin aksiyon bölümünde yer alan ifadeler (olağan durum) ve model eylem ifadelerinin kendileri için de geçerlidir.

desenler

AWK kalıpları şunlardan biri olabilir:

BEGIN END / düzenli ifade / ilişkisel ifade deseni && desen deseni || desen deseni ? desen : desen ( desen ) ! desen pattern1 , desen2

BEGIN ve END , girdiye karşı test edilmeyen iki özel desen çeşididir. Tüm BEGIN kalıplarının eylem bölümleri, tüm ifadelerin tek bir BEGIN bloğunda yazıldığı gibi birleştirilir. Herhangi bir giriş okunmadan önce yürütülürler. Benzer şekilde, tüm END blokları birleştirilir ve tüm giriş bittiğinde (veya bir çıkış ifadesi yürütüldüğünde) yürütülür. BEGIN ve END modelleri, kalıp ifadelerindeki diğer kalıplarla birleştirilemez. BEGIN ve END kalıpları, eksik eylem bölümlerine sahip olamaz.

/ Normal ifade / kalıplar için, ilişkili ifade, normal ifadeyle eşleşen her giriş kaydı için yürütülür. Düzenli ifadeler egrep (1) ile aynıdır ve aşağıda özetlenmiştir.

İlişkisel bir ifade , aşağıda eylemler bölümünde tanımlanan işleçlerden herhangi birini kullanabilir. Bunlar genellikle belirli alanların belirli normal ifadelerle eşleşip eşleşmediğini test eder.

&& , || ve ! operatörler, C'deki gibi mantıksal AND, mantıksal OR ve mantıksal NOT'lardır. C de olduğu gibi kısa devre değerlendirmesi yaparlar ve daha ilkel kalıp ifadelerini birleştirmek için kullanılırlar. Çoğu dilde olduğu gibi, değerlendirme sırasını değiştirmek için parantez kullanılabilir.

:: Operatörü C'deki aynı operatör gibidir. İlk model doğruysa, test için kullanılan model ikinci kalıptır, aksi halde üçüncü olur. İkinci ve üçüncü kalıplardan sadece biri değerlendirilir.

Bir ifadenin pattern1 , pattern2 formuna aralık modeli denir. Pattern1 ile eşleşen bir kayıt ile başlayan ve pattern2 , inclusive ile eşleşen bir kayıt olana kadar devam eden tüm kayıt kayıtlarıyla eşleşir. Başka herhangi bir desen ifadesiyle birleşmez.

Düzenli ifadeler

Düzenli ifadeler egrep'te bulunan uzatılmış türdür. Aşağıdaki karakterlerden oluşurlar:

c

meta karakter olmayanlarla eşleşir c .

\ c

değişmez karakterle eşleşir c .

.

newline dahil herhangi bir karakterle eşleşir.

^

bir dizenin başlangıcıyla eşleşir.

$

bir dizenin sonuyla eşleşir.

[ abc ... ]

Karakter listesi, abc ... karakterlerinden herhangi biriyle eşleşir.

[^ abc ... ]

negatif karakter listesi, abc ... dışındaki herhangi bir karakterle eşleşir.

r1 | r2

alternatif: ya r1 ya da r2 ile eşleşir.

r1r2

Birleştirme: r1 ve r2 ile eşleşir.

r +

bir veya daha fazla r ile eşleşir.

r *

sıfır veya daha fazla r 'ile eşleşir.

r ?

sıfır veya bir r ile eşleşir.

( r )

gruplama: r ile eşleşir.

r { n }

r { n ,}

r { n , m } Diş tellerinin içindeki bir veya iki sayı bir aralık ifadesini belirtir. Parantez içinde bir sayı varsa, önceki normal ifade r , n kez tekrarlanır. Virgülle ayrılmış iki sayı varsa r , r'den m'ye kadar tekrarlanır. Eğer bir virgül ve ardından bir sayı varsa, r en az n kez tekrarlanır.

Aralık ifadeleri sadece komut satırında --posix veya --re-interval belirtilmişse kullanılabilir.

\ y

boş dizeyi bir kelimenin başlangıcında veya sonunda eşleştirir.

\ B

boş dizeyi bir sözcükle eşleştirir.

\ <

Bir sözcüğün başında boş dizeyle eşleşir.

\>

Bir kelimenin sonunda boş dizeyle eşleşir.

\ w

herhangi bir kelime-kurucu karakterle (harf, rakam veya alt çizgi) eşleşir.

\ W

kelimesi olmayan herhangi bir karakterle eşleşir.

\ `

Boş dizeyi arabelleğin başında (dizeyle) eşleştirir.

\ '

Bir arabellek sonunda boş dizeyle eşleşir.

Dize sabitlerinde geçerli olan çıkış sıraları (aşağıya bakınız) normal ifadelerde de geçerlidir.

Karakter sınıfları , POSIX standardında tanıtılan yeni bir özelliktir. Bir karakter sınıfı, belirli bir özelliğe sahip karakterlerin listelerini tanımlamak için özel bir göstergedir, ancak gerçek karakterlerin kendileri ülkeden ülkeye ve / veya karakter kümesinden karakter kümesine değişebilir. Örneğin, bir alfabetik karakter olan neyin nesi ABD'de ve Fransa'da farklıdır.

Bir karakter sınıfı sadece bir karakter listesinin parantezleri içinde düzenli bir ifadede geçerlidir. Karakter sınıfları [: , sınıfı ifade eden bir anahtar kelime, ve :] içerir . POSIX standardı tarafından tanımlanan karakter sınıfları şunlardır:

[: Alnum:]

Alfanümerik karakterler.

[:alfa:]

Alfabetik karakterler.

[:boş:]

Boşluk veya sekme karakterleri.

[: Cntrl:]

Kontrol karakterleri.

[:hane:]

Sayısal karakterler.

[: grafiktir:]

Yazdırılabilir ve görünür olan karakterler. (Bir alan yazdırılabilir, ancak görünür değil, her ikisi de a.)

[: Alt:]

Küçük harfli alfabetik karakterler.

[: print:]

Yazdırılabilir karakterler (kontrol karakteri olmayan karakterler).

[: punct:]

Noktalama karakterleri (harf, basamak, kontrol karakteri veya boşluk karakteri olmayan karakterler).

[: alanı:]

Boşluk karakterleri (boşluk, sekme ve form beslemesi gibi).

[:üst:]

Büyük harfli alfabetik karakterler.

[: Xdigit:]

Onaltılık basamaklı karakterler.

Örneğin, POSIX standardından önce, alfanümerik karakterleri eşleştirmek için, / [A-Za-z0-9] / . Karakter kümenizde başka alfabetik karakterler varsa, bu onları eşleştirmez ve karakter kümeniz ASCII'den farklı bir şekilde harmanlanmışsa, bu ASCII alfasayısal karakterleriyle bile eşleşmeyebilir. POSIX karakter sınıfları ile / [[: alnum:]] / yazabilirsiniz ve bu, karakter kümenizdeki alfabetik ve sayısal karakterlerle eşleşir.

Karakter listelerinde iki ek özel sekans görünebilir. Bunlar ASCII olmayan karakter kümeleri için geçerlidir; bunlar, birden fazla karakterle temsil edilen tekli sembollere ( harmanlama öğeleri olarak adlandırılır) ve harmanlama veya sıralama amacıyla eşdeğer birkaç karaktere sahip olabilir. (Örneğin, Fransızcada, bir düz "e" ve bir mezara göre e "eşdeğerdir.)

Sembolleri Harmanlama

Harmanlayan bir sembol, [. ve .] . Örneğin, ch bir harmanlama elemanıysa, [[.ch.]] Bu harmanlama elemanına uyan normal bir ifadedir, [ch] ise c veya h ile eşleşen normal bir ifadedir.

Eşdeğerlik Sınıfları

Eşdeğerlik sınıfı, eşdeğer karakterlerin listesi için yerel ayara özgü bir addır. İsim [= ve =] içinde eklenmiştir. Örneğin, "e", "e", "" ve "e" öğelerini temsil etmek için kullanılabilir. Bu durumda, [[= e =]] normal bir ifadedir. e , e ' veya e' ile eşleşir .

Bu özellikler, İngilizce konuşulan yerel olmayan yerlerde çok değerlidir. Düzenli ifade eşleşmesi için gawk'in kullandığı kütüphane işlevleri şu anda yalnızca POSIX karakter sınıflarını tanır; harmanlama sembolleri veya denklik sınıflarını tanımazlar.

\ Y , \ B , \ < , \> , \ w , \ W , \ ` ve \ ' operatörleri gawk'a özgüdür; GNU düzenli ifade kütüphanelerindeki tesislere dayanan uzantılardır.

Çeşitli komut satırı seçenekleri, karakterin düzenli ifadelerde karakterleri nasıl yorumladığını kontrol eder.

Seçenek yok

Varsayılan durumda, gawk , POSIX düzenli ifadelerinin tüm özelliklerini ve yukarıda açıklanan GNU düzenli ifade operatörlerini sağlar. Ancak, aralık ifadeleri desteklenmez.

--posix

Sadece POSIX normal ifadeler desteklenir, GNU operatörleri özel değildir. (Örn, \ w , bir literal w ile eşleşir). Aralık ifadelerine izin verilir.

--geleneksel

Geleneksel Unix awk düzenli ifadeler eşleştirildi. GNU operatörleri özel değildir, aralık ifadeleri kullanılamaz ve POSIX karakter sınıfları yoktur ( [[: alnum:]] vb.). Sekizli ve onaltılı kaçış dizileri tarafından tanımlanan karakterler, normal ifadeler metakarakterlerini temsil etseler bile, tam anlamıyla ele alınırlar.

--re-aralığı

Düzenli ifadelerde aralıklı ifadelere izin verilmeli , hatta daha önce sağlanmış olsa bile.

Eylemler

Eylem ifadeleri, { veya } parantez içine alınır. Eylem bildirimleri, çoğu dilde bulunan olağan atama, koşullu ve döngü ifadelerinden oluşur. Kullanılabilen operatörler, kontrol ifadeleri ve girdi / çıktı ifadeleri, C.

Operatörler

Önceliği azaltmak amacıyla AWK'daki operatörler

( ... )

Gruplama

$

Alan referansı.

++ -

Hem önek hem de sonek artırma ve azaltma.

^

Eksponansasyon ( ** ayrıca kullanılabilir ve atama operatörü için ** = ).

+ -!

Unary plus, unary eksi ve mantıksal negatif.

* /%

Çarpma, bölme ve modül.

+ -

Toplama ve çıkarma.

uzay

Dize birleştirme.

<>

<=> =

! = == Düzenli ilişkisel operatörler.

~! ~

Normal ifade eşleşmesi, olumsuz eşleşme. NOT: ~ veya ! ~ ' Nin sol tarafında sabit bir düzenli ifade ( / foo / ) kullanmayın. Sadece sağ tarafta bir tane kullanın. / Foo / ~ exp ifadesi, (($ 0 ~ / foo /) ~ exp ) ile aynı anlama sahiptir. Bu genellikle amaçlanan şey değildir .

içinde

Dizi üyeliği.

&&

Mantıksal VE.

||

Mantıksal VEYA.

?:

C koşullu ifade. Bu form expr1 var ? expr2 : expr3 . Eğer expr1 doğruysa, ifadenin değeri expr2'dir , aksi takdirde expr3'tür . Expr2 ve expr3 sadece biri değerlendirilir.

= + = - =

* = / =% = ^ = Atama. Her iki mutlak atama ( var = değer ) ve operatör atama (diğer formlar) desteklenir.

Kontrol İfadeleri

Kontrol ifadeleri aşağıdaki gibidir:

if ( koşul ) deyimi [ else statement ] while ( koşul ) deyimi while deyimi while ( koşul ) için ( expr1 ; expr2 ; expr3 ) deyimi için ( var dizisi ) deyim sonu devam eden diziyi sil [ dizin ] diziyi sil [ exit ] [ ifadeler

I / O İfadeleri

Giriş / çıkış ifadeleri aşağıdaki gibidir:

kapat ( dosya [ , nasıl ] )

Dosyayı, boruyu veya birlikte çalışmayı kapatın. İsteğe bağlı, yalnızca iki yönlü bir borunun bir ucunu bir birlikte işleme dönüştürürken nasıl kullanılmalıdır. Dize değeri " ya " ya da "from" olmalıdır .

hat almak

Sonraki giriş kaydındaki 0 $ 'ı ayarlayın; NF , NR , FNR'yi ayarlayın .

getline < dosya

Bir sonraki kayıt dosyasından 0 $ 'ı ayarlayın; NF'yi ayarlayın.

getline var

Bir sonraki giriş kaydından var olanı ayarlayın; NR , FNR'yi ayarlayın.

getline var < dosya

Bir sonraki kayıt dosyasından var .

komut | getline [ var ]

Komutu , çıktıyı yukarıdaki gibi 0 $ veya var olacak şekilde çalıştırın.

komut | & getline [ var ]

Komutu , çıktıyı yukarıdaki gibi 0 ya da var olan bir boruya dönüştürün. Ortak süreçler bir gawk uzantısıdır.

Sonraki

Mevcut giriş kaydını işlemeyi durdur. Bir sonraki giriş kaydı okunur ve AWK programındaki ilk kalıp ile işlem başlar. Giriş verilerinin sonuna ulaşılırsa, varsa END blokları uygulanır.

nextfile

Mevcut giriş dosyasını işlemeyi durdur. Sonraki giriş kaydı, bir sonraki giriş dosyasından gelir. FILENAME ve ARGIND güncellendi, FNR 1'e sıfırlandı ve AWK programındaki ilk modelle işlem başlatıldı. Giriş verilerinin sonuna ulaşılırsa, varsa END blokları uygulanır.

baskı

Geçerli kaydı yazdırır. Çıkış kaydı, ORS değişkeninin değeri ile sonlandırılır.

expr-list yazdır

İfadeleri yazdırır. Her bir ifade OFS değişkeninin değeri ile ayrılır. Çıkış kaydı, ORS değişkeninin değeri ile sonlandırılır.

expr-list yazdır > dosya

Dosyadaki ifadeleri yazdırır. Her bir ifade OFS değişkeninin değeri ile ayrılır. Çıkış kaydı, ORS değişkeninin değeri ile sonlandırılır.

printf fmt, expr-list

Biçim ve yazdır.

printf fmt, expr-list > dosya

Dosyayı formatlayın ve yazdırın.

sistem ( cmd-çizgi )

Cmd-line komutunu yürütün ve çıkış durumunu döndür. (Bu POSIX olmayan sistemlerde mevcut olmayabilir.)

fflush ( [ dosya ] )

Açık çıkış dosyası veya boru dosyasıyla ilişkili tüm arabellekleri temizleyin. Dosya yoksa, standart çıkış temizlenir. Dosya boş dizgeyse, tüm açık çıktı dosyaları ve borular arabelleklerini temizler.

Baskı ve printf için ek çıkış yönlendirmelerine izin verilir.

yazdır ... >> dosya

çıktıyı dosyaya ekler.

yazdır ... | komuta

bir boru üzerine yazıyor.

yazdır ... | & komutu

verileri bir ortak sürece gönderir.

Getline komutu, dosyanın sonunda 0 ve bir hatada -1 döndürür. Bir hata üzerine, ERRNO sorunu açıklayan bir dizgi içerir.

NOT: Bir boru ya da işlenecek hat kullanılarak veya bir döngü içinde baskı veya baskıyla birlikte kullanılıyorsa, komutun yeni örneklerini oluşturmak için close () öğesini kullanmanız gerekir . AWK, EOF'yi iade ettiğinde otomatik olarak boruları veya ortak işlemleri kapatmaz.

Printf Bildirimi

Printf ifadesinin ve sprintf () işlevinin AWK sürümleri (aşağıya bakınız) aşağıdaki dönüştürme belirtim biçimlerini kabul eder:

% c

Bir ASCII karakteri. % C için kullanılan argüman sayısal ise, bir karakter olarak ele alınır ve yazdırılır. Aksi takdirde, argümanın bir dize olduğu varsayılır ve bu dizenin sadece ilk karakteri basılır.

% d , % i

Ondalık sayı (tam sayı).

% e,% E

[-] d.dddddde [+ -] dd biçiminde bir kayan nokta sayısı. % E biçimi, e yerine E'yi kullanır.

% f

[-] ddd.dddddd biçiminde bir kayan nokta sayısı.

% g,% G

% E veya % f dönüşümünü, hangisi daha kısasa, önemsiz sıfırlar bastırılmış olarak kullanın. % G biçimi % e yerine % E kullanır.

%O

İmzasız bir sekizli sayı (ayrıca bir tamsayı).

İmzasız bir ondalık sayı (tekrar, bir tam sayı).

% s

Bir karakter dizesi.

% x,% X

İmzasız bir onaltılık sayı (bir tamsayı). % X biçimi abcdef yerine ABCDEF kullanır.

%%

% Tek bir karakter; argüman dönüştürülmez.

İsteğe bağlı, % ve kontrol harfi arasında ek parametreler bulunabilir:

$ say

Biçimlendirmede bu noktada sayım argümanını kullanın. Bu, konumsal belirteci olarak adlandırılır ve öncelikle bir AWK programının orijinal metninde değil, biçim dizgilerinin çevrilmiş sürümlerinde kullanılmak üzere tasarlanmıştır. Bu bir gawk uzantısıdır.

-

İfadenin kendi alanı içinde sola dayalı olması gerekir.

uzay

Sayısal dönüşümler için, bir boşluk ile önek pozitif değerleri ve eksi işareti ile negatif değerler.

+

Genişlik değiştiriciden (aşağıya bakın) önce kullanılan artı işareti, biçimlendirilecek veriler pozitif olsa bile her zaman sayısal dönüşümler için bir işaret sağladığını belirtir. + Boşluk değiştiriciyi geçersiz kılar.

#

Belirli kontrol harfleri için bir `` alternatif form '' kullanın. % O için , bir başlangıç ​​sıfırı sağlayın. % X ve % X için sıfır olmayan bir sonuç için önde gelen bir 0x veya 0X verin . % E , % E ve % f için sonuç her zaman ondalık basamak içerir. % G ve % G için , sondaki sıfırlar sonuçtan kaldırılmaz.

0

Öndeki 0 (sıfır) bayrak olarak işlev görür, bu da çıktının boşluk yerine sıfırlarla doldurulması gerektiğini gösterir. Bu, sayısal olmayan çıktı biçimleri için de geçerlidir. Bu bayrak sadece alan genişliği basılacak olan değerden daha geniş olduğunda bir etkiye sahiptir.

Genişlik

Alan bu genişliğe kadar doldurulmalıdır. Alan normalde boşluklarla doldurulur. 0 bayrağı kullanılmışsa, sıfır ile doldurulur.

. prec

Yazdırırken kullanılacak hassaslığı belirten bir sayı. % E , % E ve % f biçimleri için, bu, ondalık noktasının sağında basılmasını istediğiniz basamak sayısını belirtir. % G ve % G biçimleri için, anlamlı basamakların maksimum sayısını belirtir. % D , % o , % i , % u , % x ve % X biçimleri için, yazdırılacak minimum sayı sayısını belirtir. % S için , yazdırılması gereken dizeden en fazla karakter sayısını belirtir.

ANSI C printf () rutinlerinin dinamik genişliği ve ön yetenekleri desteklenir. Genişlik veya ön teknik özelliklerin yerine A * değerleri, bunların argüman listesinden printf veya sprintf () öğesine alınmasına neden olur. Dinamik genişlik veya hassasiyetle bir konum belirleyici kullanmak için, biçim dizesindeki * sayısını sonra verin. Örneğin, "% 3 $ * 2 $. * 1 $ s" .

Özel Dosya İsimleri

G / Ç yönlendirme, baskıdan veya baskıdan bir dosyaya veya bir dosyadan getline yoluyla yapılırken , gawk dahili olarak belirli özel dosya adlarını tanır. Bu dosya adları, gawk'in ana işleminden (genellikle kabuk) alınan açık dosya tanımlayıcılarına erişime izin verir. Bu dosya adları, veri dosyalarını adlandırmak için komut satırında da kullanılabilir. Dosya isimleri:

/ dev / Stdin

Standart giriş.

/ dev / stdout'u

Standart çıktı.

/ dev / Stderr

Standart hata çıkışı.

/ dev / fd / n

Açık dosya tanıtıcısıyla ilişkilendirilmiş dosya

Bunlar özellikle hata mesajları için kullanışlıdır. Örneğin:

print "Onu patlattın!" > "/ dev / stderr"

aksi halde kullanmak zorunda kalacaksın

print "Onu patlattın!" | "kedi 1> ve 2"

Aşağıdaki özel dosya adları, TCP / IP ağ bağlantıları oluşturmak için | & yardımcı işlem operatörü ile kullanılabilir.

/ inet / tcp / lport / rhost / rport

Uzak bağlantı noktası limanda uzak ana makineye yerel bağlantı noktası lport üzerinde TCP / IP bağlantısı için dosya . Sistemin bir port seçmesini sağlamak için 0 portunu kullanın.

/ inet / udp / lport / rhost / rport

Benzer, ancak TCP / IP yerine UDP / IP kullanın.

/ inet / raw / lport / rhost / rport

Gelecekte kullanılmak üzere rezerve edilmiştir.

Diğer özel dosya isimleri , çalışan gawk işlemi hakkında bilgiye erişim sağlar. Bu dosya isimleri artık eskimiş. Sağladıkları bilgileri almak için PROCINFO dizisini kullanın. Dosya isimleri:

/ dev / PID

Bu dosyayı okumak, mevcut sürecin işlem kimliğini, ondalık olarak bir satırsonuyla sonlandırır.

/ dev / ppid

Bu dosyayı okumak, geçerli sürecin ana işlem kimliğini, ondalık olarak bir satırsonuyla sonlandırır.

/ dev / pgrpid

Bu dosyayı okumak, mevcut sürecin işlem grubu kimliğini, ondalık olarak bir satırsonuyla sonlandırır.

/ dev / Kullanıcı

Bu dosyayı okumak, yeni satırla sonlanan tek bir kaydı döndürür. Alanlar boşluklarla ayrılır. $ 1 getuid (2) sistem çağrısının değeridir, $ 2 geteuid (2) sistem çağrısının değeridir, $ 3 getgid (2) sistem çağrısı değeridir ve $ 4 getegid'in değeridir (2) sistem çağrısı. Başka alanlar varsa, bunlar getgroups tarafından döndürülen grup kimlikleridir (2). Tüm sistemlerde çoklu gruplar desteklenmeyebilir.

Sayısal İşlevler

AWK, aşağıdaki yerleşik aritmetik işlevlere sahiptir:

atan2 ( y , x )

Radyanlarda y / x'nin arktanjantını döndürür.

çünkü ( expr )

Radyan olan expr kosinüsünü döndürür.

exp ( expr )

Üstel işlevi.

int ( expr )

Tamsayıya keser.

log ( expr )

Doğal logaritma fonksiyonu.

rand ()

0 ile 1 arasında rastgele bir sayı döndürür.

günah

Radyan olan expr sinüsünü döndürür.

sqrt ( expr )

Karekök işlevi.

srand ( [ expr ] )

Rasgele sayı üreteci için yeni bir tohum olarak kullanır. Eğer bir expr sağlanmadıysa, günün saati kullanılır. Dönüş değeri, rasgele sayı üreteci için önceki tohumdur.

Dize İşlevleri

Gawk aşağıdaki yerleşik dize işlevlerine sahiptir:

asort ( s [ , d ] )

Kaynak dizisindeki s öğe sayısını döndürür. S'nin içeriği, değerlerin karşılaştırılması için gawk'in normal kuralları kullanılarak sıralanır ve s'nin sıralanmış değerlerinin dizinleri, 1 ile başlayan sıralı tamsayılarla değiştirilir. İsteğe bağlı hedef dizisi d belirtilirse, s ilk olarak d şeklinde çoğaltılır. ve sonra d dizisi, kaynak dizininin dizinlerini değiştirmeden bırakılır.

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

Düzenli ifadenin r eşleşmeleri için hedef dizgisini t ara. Eğer h , g veya G ile başlayan bir dizeyse, tüm r eşlemelerini s ile değiştirin. Aksi halde, h , r eşlemesinin yerini belirten bir sayıdır. Eğer t sağlanmıyorsa, bunun yerine $ 0 kullanılır. İkame metninde s , n'nin nano parantezize edilmiş alt ifadesi ile eşleşen metni göstermek için n'nin 1'den 9'a kadar olan bir sayı olduğu n dizisi kullanılabilir. \ 0 dizisi, karakterin yaptığı gibi, eşleşen metnin tamamını temsil eder. Sub () ve gsub () öğelerinden farklı olarak, değiştirilen dize işlevin sonucu olarak döndürülür ve orijinal hedef dizesi değiştirilmez.

gsub ( r , s [ , t ] )

T dizisindeki normal ifadeyle r eşleşen her bir alt dizgi için, dizgenin yerini koyun ve ikame sayısını döndür. T sağlanmıyorsa, 0 $ kullanın. Değiştirme metnindeki & amp ; gerçekte eşleşen metinle değiştirilir. & & Quot; kelimelerini almak için & kullanın. (Bu, "\\ &" olarak yazılmalıdır; bkz. GAWK: Sub () , gsub () ve gensub () öğesinin değiştirilmesinde & 's ve backslashes için kuralların daha kapsamlı bir şekilde tartışılması için etkili AWK Programlama .)

dizin ( s , t )

T dizesinde t dizgesini veya t yoksa, 0 değerini döndürür. (Bu, karakter indekslerinin biriyle başladığını gösterir.)

uzunluk ( [ s ] )

Sağlanmadığı takdirde dizgenin s uzunluğunu veya $ 0 uzunluğunu döndürür .

maç ( s , r [ , a ] )

Normal ifadenin r olduğu yerdeki konumu veya r yoksa, 0 değerini döndürür ve RSTART ve RLENGTH değerlerini ayarlar. Argüman sırasının, ~ operatörü ile aynı olduğuna dikkat edin: str . A dizisi sağlanırsa, bir temizlenir ve daha sonra 1 ile n arasındaki elemanlar r'deki karşılık gelen parantezlenmiş alt ifadeyle eşleşen s bölümleriyle doldurulur. A'nın 0'cı elemanı, tüm normal ifadenin r tarafından eşleştirilen s bölümünü içerir.

bölünmüş ( s , a [ , r ] )

Dize s dizisini a normal ifadede a böler ve alan sayısını döndürür. Eğer r ihmal edilirse, bunun yerine FS kullanılır. İlk olarak a dizisi temizlenir. Bölme, yukarıda açıklanan alan ayırma ile aynı şekilde davranır.

sprintf ( fmt , expr-list )

Expr listesini fmt'ye göre yazdırır ve sonuçta oluşan dizgiyi döndürür.

strtonum ( str )

Str'yi inceler ve sayısal değerini döndürür. Str öndeki 0 ile başlarsa , strtonum () str'nin sekizlik bir sayı olduğunu varsayar. Str , önde gelen bir 0x veya 0X ile başlıyorsa, strtonum () , str'nin onaltılık bir sayı olduğunu varsayar.

alt ( r , s [ , t ] )

Tıpkı gsub () gibi, ancak sadece ilk eşleşen alt dizgi değiştirilir.

substr ( s , i [ , n ] )

I'den başlayarak en fazla n -character substring değerini döndürür. Eğer n ihmal edilirse, geri kalanlar kullanılır.

tolower ( str )

Str'deki tüm büyük harf karakterleri, karşılık gelen küçük-küçük harf karşılıklarına çevrildiğinde, str dizesinin bir kopyasını döndürür. Alfabetik olmayan karakterler değişmeden kalır.

toupper ( str )

Str ifadesinin bir kopyasını str'deki tüm küçük harf karakterleri karşılık gelen büyük-küçük harf karşılıklarına çevirir. Alfabetik olmayan karakterler değişmeden kalır.

Zaman Fonksiyonları

AWK programlarının birincil kullanımlarından biri, zaman damgası bilgisi içeren günlük dosyalarını işlemesi olduğundan, zaman damgası almak ve bunları biçimlendirmek için gawk aşağıdaki işlevleri sağlar.

mktime ( datespec )

Datepec'i systime () ile döndürülen aynı formdaki bir zaman damgasına dönüştürür. Datespec , YYYY AA DD HH MM SS [DST] biçimindeki bir dizedir. Dizenin içeriği sırasıyla, yedinci yıl, 1 ile 12 arasındaki ay, 1 ile 31 arasındaki ayın günü, ayın 1'i ila 31 arasında, günün saatiyle 0'dan 23'e, dakikadan 0'a kadar olanı temsil eden altı veya yedi sayıdır. 59 ve ikinci 0'dan 60'a ve isteğe bağlı gün ışığından yararlanan bir bayrak. Bu sayıların değerleri belirtilen aralıklar içinde olmamalıdır; örneğin, bir saat -1, gece yarısından 1 saat önce demektir. Menşe-sıfır Gregoryen takvimi, önceki yıl 1 ile 0 ve önceki yıl 0 ile birlikte varsayılır. Zamanın yerel saat diliminde olduğu varsayılır. Gün ışığından yararlanan bayrak pozitifse, zamanın gün ışığından yararlanma saati olduğu varsayılır; Sıfır ise, zaman standart zaman olarak kabul edilir; ve negatif (varsayılan) ise, mktime ( ), gün ışığından yararlanma saatinin belirtilen süre için geçerli olup olmadığını belirlemeye çalışır. Datespec yeterli öğe içermiyorsa veya sonuçta zaman aralığı yoksa, mktime () -1 değerini döndürür.

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

Biçimdeki belirtime göre zaman damgasını formatlar. Zaman damgası , systime () tarafından döndürülenle aynı biçimde olmalıdır. Zaman damgası eksikse, günün geçerli saati kullanılır. Biçim eksikse, tarih çıktısına (1) eşdeğer bir varsayılan biçim kullanılır. Mevcut olması garantileyen format dönüşümleri için ANSI C'deki strftime () işlevinin belirtimine bakın. Strftime (3) ' ün bir kamuya açık versiyonu ve bunun için bir adam sayfası gawk ile gelir; Bu sürüm gawk oluşturmak için kullanılmışsa, o zaman bu sayfada açıklanan dönüşümlerin tümü gawk için kullanılabilir .

SYSTIME ()

Günün geçerli saatini, Epoch'tan itibaren geçen saniye sayısı (POSIX sistemlerinde 1970-01-01 00:00:00 UTC) olarak döndürür.

Bit Manipülasyonları Fonksiyonları

Gawk sürüm 3.1 ile başlayarak, aşağıdaki bit manipülasyon fonksiyonları kullanılabilir. Çift duyarlıklı kayan nokta değerlerini işaretsiz uzun tam sayılara dönüştürerek, işlemi gerçekleştirerek ve ardından sonucu geri kayan noktaya dönüştürerek çalışırlar. Fonksiyonlar şunlardır:

ve ( v1 , v2 )

V1 ve v2 tarafından sağlanan değerlerin bitsel VE değerini döndürün .

compl ( val )

Val'in bitsel tamamlayıcısını döndür .

lshift ( val , sayım )

Değerin bit değerini döndürerek bit değerini döndür .

veya ( v1 , v2 )

V1 ve v2 tarafından sağlanan değerlerin bitlik OR'ını döndürün .

rshift ( val , sayım )

Val değerinin sağa döndürülmesi , sayım bitleri ile kaydırıldı.

xor ( v1 , v2 )

V1 ve v2 tarafından sağlanan değerlerin bit XOR değerini döndürür.

Uluslararasılaşma Fonksiyonları

Gawk sürüm 3.1 ile başlayarak, aşağıdaki işlevler çalışma zamanında dizeleri çevirmek için AWK programınızdan kullanılabilir. Tüm ayrıntılar için, bkz. GAWK: Etkili AWK Programlama .

bindtextdomain ( dizin [ , domain ] )

`` Standart '' konumlarına (örneğin, test sırasında) yerleştirilmeyecekleri ya da yerleştirilemeyecekleri durumlarda gawk'in .mo dosyalarını aradığı dizini belirtir. Alanın "bağlı" olduğu dizini döndürür.

Varsayılan etki alanı TEXTDOMAIN değeridir. Dizin boş dizge ( "" ) ise, bindtextdomain () verilen etki alanı için geçerli bağlamayı döndürür.

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

Yerel kategori kategorisi için metin etki alanı etki alanındaki dizenin çevirisini döndürür. Etki alanı için varsayılan değer, TEXTDOMAIN öğesinin geçerli değeridir. Kategori için varsayılan değer "LC_MESSAGES" .

Kategori için bir değer sağlarsanız , GAWK: Etkili AWK Programlama'da açıklanan bilinen yerel kategorilerden birine eşit bir dize olmalıdır. Ayrıca bir metin alanı sağlamanız gerekir. Geçerli etki alanını kullanmak istiyorsanız TEXTDOMAIN kullanın.

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

Yerel kategori kategorisi için metin alanı etki alanında string1 ve string2'nin çevirisi için kullanılan çoğul halini döndürür. Etki alanı için varsayılan değer, TEXTDOMAIN öğesinin geçerli değeridir. Kategori için varsayılan değer "LC_MESSAGES" .

Kategori için bir değer sağlarsanız , GAWK: Etkili AWK Programlama'da açıklanan bilinen yerel kategorilerden birine eşit bir dize olmalıdır. Ayrıca bir metin alanı sağlamanız gerekir. Geçerli etki alanını kullanmak istiyorsanız TEXTDOMAIN kullanın.

KULLANICI TANIMLI FONKSİYONLAR

AWK'daki işlevler aşağıdaki gibi tanımlanır:

işlev adı ( parametre listesi ) { statement }

İşlevler, desenler veya eylemlerdeki ifadeler içinde çağrıldığında uygulanır. Fonksiyon çağrısında verilen gerçek parametreler, fonksiyonda beyan edilen resmi parametreleri başlatmak için kullanılır. Diziler referans ile geçirilir, diğer değişkenler değer ile geçirilir.

İşlevler orijinal olarak AWK dilinin bir parçası olmadığından, yerel değişkenler için karşılık oldukça hantaldır: Parametre listesinde ek parametreler olarak bildirilirler. Bu kural, yerel değişkenleri parametre listesindeki ekstra boşluklarla gerçek parametrelerden ayırmaktır. Örneğin:

f fonksiyonu (p, q, a, b) # a ve b yereldir {...} / abc / {...; f (1, 2); ...}

Fonksiyon çağrısındaki sol parantez, herhangi bir araya giren beyaz alan olmaksızın işlev ismini hemen takip etmek için gereklidir. Bu, birleştirme operatörü ile sözdizimsel bir belirsizlikten kaçınmaktır. Bu kısıtlama, yukarıda listelenen yerleşik işlevler için geçerli değildir.

Fonksiyonlar birbirini arayabilir ve özyineli olabilir. Yerel değişkenler olarak kullanılan işlev parametreleri, işlev çağrısı üzerine boş dizeye ve sıfır sayısına sıfırlanır.

Bir işlevden bir değer döndürmek için return expr kullanın. Hiçbir değer sağlanmadığında veya işlev, "kapanma" ile geri dönerse, dönüş değeri tanımsızdır.

--lint sağlandıysa, gawk , çalışma zamanında yerine ayrıştırma sırasında tanımlanmamış işlevlere yapılan çağrıları uyarır. Çalışma zamanında tanımlanmamış bir işlevi çağırmak ölümcül bir hatadır.

Func kelimesi fonksiyon yerine kullanılabilir.

YENİ YÜKLENEN YENİ FONKSİYONLAR

Gawk sürüm 3.1 ile başlayarak, çalışan gawk yorumlayıcısına dinamik olarak yeni yerleşik işlevler ekleyebilirsiniz. Tüm detaylar bu el kitabının kapsamı dışındadır; GAWK: Ayrıntılar için etkili AWK Programlama .

uzatma ( nesne , işlev )

Nesne tarafından adlandırılmış paylaşılan nesne dosyasını dinamik olarak bağla ve başlatmayı gerçekleştirmek için bu nesnedeki işlevi çağır. Bunların her ikisi de dizeler olarak sağlanmalıdır. İşlev tarafından döndürülen değeri döndürür.

Bu işlev, GAWK: Etkili AWK Programlama'da sağlanmış ve belgelenmiştir, ancak bu özellik hakkındaki her şeyin bir sonraki sürümde değişmesi muhtemeldir. Bu özelliği, tekrar yapmak istemediğiniz bir şey için kullanmamanızı şiddetle öneririz.

SİNYALLERİ

pgawk iki sinyali kabul eder. SIGUSR1 , bir awkprof.out olan profil dosyasına ya da --profile seçeneği ile adlandırılan dosyaya bir profil ve işlev çağrısı yığınının dökülmesine neden olur. Daha sonra koşmaya devam ediyor. SIGHUP , profile ve işlev çağrı yığınına dökülmesine ve sonra çıkmasına neden olur.

ÖRNEKLER

Tüm kullanıcıların giriş adlarını yazdırın ve sıralayın: BEGIN {FS = ":"} {print $ 1 | "sort"} Bir dosyadaki satırları say: {nlines ++} END {print nlines} Her satırı dosyadaki numaraya göre sıralayın : {print FNR, $ 0} Birleştirme ve satır numarası (bir temada bir değişiklik): {print NR, 0 TL}

içselleştirilmesi

Dize sabitleri, çift tırnak içine alınmış karakter dizileridir. İngilizce olmayan ortamlarda, AWK programındaki dizeleri yerel doğal dile çevirmeyi gerektirecek şekilde işaretlemek mümkündür. Bu dizeler, AWK programında önde gelen alt çizgi ile işaretlenir (`` _ ''). Örneğin,

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

hep merhaba, dünyayı basar. Fakat,

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

Fransa'da bonjour, monde yazdırabilir.

Yerelleştirilebilir bir AWK programının üretilmesi ve çalıştırılmasıyla ilgili birkaç adım vardır.

1.

Metin etki alanını programınızla ilişkili bir ada olarak ayarlamak için TEXTDOMAIN değişkenine bir değer atamak üzere bir BEGIN eylemi ekleyin.


BEGIN {TEXTDOMAIN = "myprog"}

Bu, gawk'in programınızla ilişkili .mo dosyasını bulmasına izin verir. Bu adım olmadan, gawk , muhtemelen programınız için çeviriler içermeyen mesaj metin alanını kullanır.

2.

Önde gelen altçizgi ile çevrilmesi gereken tüm dizeleri işaretle.

3.

Gerekirse, programınızdaki dcgettext () ve / veya bindtextdomain () işlevlerini uygun şekilde kullanın.

4.

Programınız için bir .po dosyası oluşturmak için gawk --gen-po -f myprog.awk> myprog.po komutunu çalıştırın.

5.

Uygun çeviriler sağlayın ve karşılık gelen bir .mo dosyası oluşturun ve kurun.

Uluslararasılaştırma özellikleri GAWK: Etkili AWK Programlamada tam olarak açıklanmıştır.

Posix Uyumluluğu

Gawk için birincil hedef, UNIX awk'nin en son sürümünün yanı sıra POSIX standardıyla uyumluluktur. Bu amaçla, gawk , AWK kitabında tarif edilmeyen, ancak awk'nin Bell Laboratories versiyonunun bir parçası olan ve POSIX standardında bulunan aşağıdaki kullanıcı görünür özelliklerini içerir.

Kitap, awk'nin argümanı BEGIN bloğu yürütüldükten sonra bir dosya olarak açması durumunda komut satırı değişken atamasının gerçekleştiğini gösterir. Ancak, daha önceki uygulamalarda, böyle bir atama herhangi bir dosya adından önce ortaya çıktığında, ödev BEGIN bloğu çalıştırılmadan önce gerçekleşir. Uygulamalar bu `` özellik '' 'e bağlı olarak ortaya çıktı.' ' Awk , belgelerine uyacak şekilde değiştirildiğinde, eski davranışa bağlı uygulamalara uyum sağlamak için program yürütmeden önce değişkenleri atamak için -v seçeneği eklendi. (Bu özellik hem Bell Laboratuvarları hem de GNU geliştiricileri tarafından kabul edildi.)

Uygulamaya özgü özellikler için -W seçeneği POSIX standardından.

Argümanlar işlenirken, gawk argümanların sonuna işaret etmek için özel seçeneği `` - '' kullanır. Uyumluluk modunda, bu konuda uyarır ancak tanımlanmamış seçenekleri göz ardı eder. Normal çalışmada, bu tür argümanlar işlemek için AWK programına iletilir.

AWK kitabı, srand () öğesinin dönüş değerini tanımlamaz. POSIX standardı, rasgele sayı dizilerinin izini sürdürebilmek için kullandığı tohumu iade etti. Bu nedenle, gawk'daki srand () ayrıca geçerli tohumunu döndürür.

Diğer yeni özellikler: Çoklu- f seçeneklerinin kullanımı (MKS awk'den ); ENVIRON dizisi; \ a ve \ v çıkış dizileri (orijinal olarak gawk'da yapılır ve Bell Laboratuvarları sürümüne geri gönderilir); tolower () ve toupper () yerleşik işlevleri (Bell Laboratories versiyonundan); ve printf içindeki ANSI C dönüşüm belirtimleri (Bell Laboratories sürümünde ilk yapılır).

Tarihsel Özellikler

Gawk desteklerini destekleyen tarihi AWK uygulamalarının iki özelliği vardır. Birincisi, length () fonksiyonunu sadece argüman olmadan değil, parantez bile olsa çağırmak mümkündür! Böylece,

a = uzunluk # Kutsal Algol 60, Batman!

her ikisi ile aynı

a = uzunluk ()
a = uzunluk (0 TL)

Bu özellik POSIX standardında `` kullanım dışı '' olarak işaretlenir ve eğer komut satırında --lint belirtilirse, gawk kullanımı hakkında bir uyarı verir .

Diğer özellik, bir sürenin devam etmesi veya kesinti ifadelerinin kullanılmasıdır. Geleneksel AWK uygulamaları, bu kullanımı bir sonraki ifadeye eşdeğer olarak ele almıştır. Gawk - eğer geleneksel belirtilmişse bu kullanımı desteklemektedir.

GNU Uzantıları

Gawk POSIX awk için bir dizi uzantıya sahiptir. Bu bölümde anlatılmıştır. Burada açıklanan tüm uzantılar --traditional seçeneği ile gawk çağrılarak devre dışı bırakılabilir.

Gawk'in aşağıdaki özellikleri POSIX awk'de mevcut değildir.

*

-f seçeneği ile adlandırılan dosyalar için yol araması yapılmaz. Bu nedenle AWKPATH ortam değişkeni özel değildir.

*

\ X çıkış sırası. ( --posix ile devre dışı .)

*

Fflush () işlevi. ( --posix ile devre dışı .)

*

Çizgilerden sonra devam etme yeteneği ? ve :. ( --posix ile devre dışı .)

*

AWK programlarında sekizli ve onaltılık sabitler.

*

ARGIND , BINMODE , ERRNO , LINT , RT ve TEXTDOMAIN değişkenleri özel değildir.

*

IGNORECASE değişkeni ve yan etkileri mevcut değildir.

*

FIELDWIDTHS değişken ve sabit genişlikli alan bölme.

*

PROCINFO dizisi mevcut değil.

*

RS'nin normal bir ifade olarak kullanılması.

*

G / Ç yönlendirmesi için kullanılabilen özel dosya adları tanınmadı.

*

Ortak süreçler oluşturmak için | & operatör.

*

Tekil karakterleri, FS dizesi olarak boş dizeyi kullanarak ve split () için üçüncü argüman olarak ayırma becerisi.

*

Close () işlevine isteğe bağlı ikinci bağımsız değişken.

*

Match () işlevine isteğe bağlı üçüncü bağımsız değişken.

*

Printf ve sprintf () ile konum belirleyicileri kullanma yeteneği.

*

Bir dizinin tüm içeriğini silmek için silme dizisinin kullanımı.

*

Mevcut giriş dosyasının işlenmesini bırakmak için sonraki dosya kullanımı.

*

Ve () , asort () , bindtexktomain () , compl () , dcgettext () , gensub () , lshift () , mktime () veya () , rshift () , strftime () , strtonum () , systime () ve xor () işlevleri.

*

Lokalize edilebilir dizeler.

*

Extension () işleviyle dinamik olarak yeni yerleşik işlevler eklemek.

AWK kitabı close () işlevinin dönüş değerini tanımlamaz. Gawk'in kapanışı (), sırasıyla bir çıktı dosyasını veya boruyu kapatırken fclose (3) veya pclose (3) değerini döndürür. Bir giriş borusunu kapatırken işlemin çıkış durumunu döndürür. Adlandırılmış dosya, boru veya birlikte işlem bir yönlendirme ile açılmadıysa, dönüş değeri -1 olur.

Gawk --tra geleneksel seçeneği ile çağrıldığında, -F seçeneğine fs argümanı `t 'ise, FS sekme karakterine ayarlanır. Gawk -F \ t yazıp yazmanın ... kabuğun `` t '' harfini almasına neden olduğunu ve -F seçeneğine `` \ t '' geçmediğini unutmayın. Bu oldukça çirkin bir özel durum olduğundan, varsayılan davranış değildir. Bu davranış, --posix belirtilmişse de oluşmaz. Alan ayırıcı olarak bir sekme karakteri almak için, tek tırnak kullanmak en iyisidir: gawk -F '\ t' ....

Diğer komutları gör : bekleyin , lp , tamam , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , konuşma , motd , ücretsiz , lpr , execl , fdisk , kim , iwconfig , ifconfig , vgdisplay , açık , lsmod , ntohs , mailq , kill , wtmp