İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

gawk - Bulutta Çevrimiçi

Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında gawk çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen komut gawk'tır.

Program:

ADI


gawk - desen tarama ve işleme dili

SİNOPSİS


ahmak [POSIX veya GNU stili seçenekleri] -f program dosyası [ -- ] dosya ...
ahmak [ POSIX veya GNU stili seçenekleri ] [ -- ] program metni dosya ...

TANIM


gevezelik GNU Projesinin AWK programlama dili uygulamasıdır. Şuna uygundur:
POSIX 1003.1 Standardındaki dilin tanımı. Bu sürüm sırayla
açıklamasına göre The AWK Programlama Dil, Aho, Kernighan ve
Weinberger. gevezelik Brian'ın mevcut sürümünde bulunan ek özellikleri sağlar
Kernighan'ın awk ve bir dizi GNU'ya özgü uzantı.

Komut satırı, aşağıdaki seçeneklerden oluşur: ahmak kendisi, AWK program metni (verilmemişse
ile -f or --dosya seçenekleri) ve kullanılabilir hale getirilecek değerler ARGC ve ARGV önceden
tanımlanmış AWK değişkenleri.

Ne zaman ahmak ile çağrılır --profil seçeneği, profil oluşturma istatistiklerini toplamaya başlar
programın yürütülmesinden. gevezelik bu modda daha yavaş çalışır ve otomatik olarak
dosyada bir yürütme profili üretir awkprof.out bittiğinde. Bkz. --profil
seçeneği, aşağıda.

gevezelik ayrıca entegre bir hata ayıklayıcıya sahiptir. Etkileşimli bir hata ayıklama oturumu şu şekilde başlatılabilir:
tedarik etmek - hata ayıklama komut satırı seçeneği. Bu yürütme modunda, ahmak yükler
AWK kaynak kodunu ve ardından hata ayıklama komutlarını ister. gevezelik yalnızca AWK'da hata ayıklayabilir
ile sağlanan program kaynağı -f seçenek. Hata ayıklayıcı belgelenmiştir Ne oldu? Etkili
AWK Programlama.

SEÇENEK FORMAT


gevezelik seçenekler, geleneksel POSIX stili tek harfli seçenekler veya GNU stili uzun
seçenekler. POSIX seçenekleri tek bir “-” ile, uzun seçenekler ise “--” ile başlar. Uzun
hem GNU'ya özgü özellikler hem de POSIX tarafından zorunlu kılınan özellikler için seçenekler sağlanmıştır.

gevezelik-özel seçenekler genellikle uzun seçenek biçiminde kullanılır. Uzun seçeneklere ilişkin argümanlar
ya bir seçenekle birleştirilir = işareti, araya boşluk bırakmadan, ya da olabilir
sonraki komut satırı bağımsız değişkeninde sağlanır. Uzun seçenekler, olduğu sürece kısaltılabilir.
kısaltma benzersiz kalır.

Ek olarak, her uzun seçeneğin karşılık gelen bir kısa seçeneği vardır, böylece seçenek
işlevsellik içeriden kullanılabilir #! yürütülebilir komut dosyaları

SEÇENEKLER


gevezelik aşağıdaki seçenekleri kabul eder. Önce standart seçenekler listelenir, ardından
seçenekler ahmak uzantılar, kısa seçeneğe göre alfabetik olarak listelenmiştir.

-f program dosyası
--dosya program dosyası
AWK program kaynağını dosyadan okuyun program dosyası, ilkinden yerine
komut satırı argümanı. çoklu -f (Ya da --dosya) seçenekleri kullanılabilir.

-F fs
--alan-ayırıcı fs
kullanım fs giriş alanı ayırıcısı için (değer FS önceden tanımlanmış değişken).

-v var=val
--atamak var=val
değeri ata val değişkene var, programın yürütülmesi başlamadan önce.
Bu tür değişken değerler, BAŞLA bir AWK programının kuralı.

-b
--karakter-as-bayt
Tüm giriş verilerini tek baytlık karakterler olarak ele alın. Başka bir deyişle, herhangi bir ödeme yapmayın
dizeleri çok baytlı olarak işlemeye çalışırken yerel ayar bilgilerine dikkat edin
karakter. --posix seçeneği bunu geçersiz kılar.

-c
--geleneksel
Çalıştırmak uygunluk modu. Uyumluluk modunda, ahmak aynı şekilde davranır
Brian Kernighan'ın awk; GNU'ya özgü uzantıların hiçbiri tanınmaz. Görmek GNU
UZANTILAR, daha fazla bilgi için aşağıda.

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

-d[dosya]
--dump-değişkenler[=dosya]
Genel değişkenlerin, türlerinin ve nihai değerlerinin sıralanmış bir listesini yazdırın. dosya. Eğer
yok hayır dosya sağlanır, ahmak adlı bir dosya kullanır awkvars.out geçerli dizinde.
Tüm global değişkenlerin bir listesine sahip olmak, tipografik arama yapmak için iyi bir yoldur.
programlarınızdaki hatalar. Bu seçeneği, büyük bir
bir çok fonksiyona sahip programlayın ve fonksiyonlarınızın çalışmadığından emin olmak istiyorsunuz.
yanlışlıkla yerel olmasını istediğiniz global değişkenleri kullanın. (Bu bir
gibi basit değişken adlarıyla yapmak özellikle kolay hata i, j, ve benzeri.)

-D[dosya]
- hata ayıklama[=dosya]
AWK programlarının hata ayıklamasını etkinleştirin. Varsayılan olarak, hata ayıklayıcı komutları okur
klavyeden etkileşimli olarak (standart giriş). isteğe bağlı dosya tartışma
hata ayıklayıcının olmayanları yürütmesi için bir komut listesi içeren bir dosya belirtir.
etkileşimli olarak.

-e program metni
--kaynak program metni
kullanım program metni AWK program kaynak kodu olarak. Bu seçenek, kolay
kitaplık işlevlerinin karıştırılması (kullanılan -f ve --dosya seçenekler) kaynak ile
komut satırına girilen kod. Öncelikle orta ila büyük AWK için tasarlanmıştır
kabuk komut dosyalarında kullanılan programlar.

-E dosya
--yürütme dosya
Benzer -f, ancak, bu seçenek işlenen son seçenektir. bu olmalı
ile birlikte kullanılabilir #! komut dosyaları, özellikle CGI uygulamaları için, geçmekten kaçınmak için
bir URL'den komut satırında seçenekler veya kaynak kodu (!) Bu seçenek devre dışı bırakır
komut satırı değişken atamaları.

-g
--gen-pot
AWK programını tarayın ve ayrıştırın ve bir GNU oluşturun .tencere (Taşınabilir Nesne Şablonu)
içindeki tüm yerelleştirilebilir dizeler için girişlerle standart çıktıdaki dosyayı biçimlendirin.
programı. Programın kendisi yürütülmez. GNU'ya bakın gettext için dağıtım
hakkında daha fazla bilgi .tencere dosyaları.

-h
--yardım et Standart çıktıda mevcut seçeneklerin nispeten kısa bir özetini yazdırın.
(Başına GNU kodlama Standartlar, bu seçenekler anında ve başarılı bir çıkışa neden olur.)

-i dahil dosya
--Dahil etmek dahil dosya
Bir awk kaynak kitaplığı yükleyin. Bu, aşağıdakileri kullanarak kitaplığı arar: AWKPATH
Çevre değişkeni. İlk arama başarısız olursa, başka bir girişimde bulunulacaktır.
ekledikten sonra .awk son ek. Dosya yalnızca bir kez yüklenecektir (ör.
kopyalar elimine edilir) ve kod ana programı oluşturmaz
kaynak.

-l lib
--yük lib
Paylaşılan bir kitaplık yükleyin lib. Bu, aşağıdakileri kullanarak kitaplığı arar: AWKLIBPATH
Çevre değişkeni. İlk arama başarısız olursa, başka bir girişimde bulunulacaktır.
platform için varsayılan paylaşılan kitaplık son ekini ekledikten sonra. Kütüphane
başlatma rutininin adlandırılması bekleniyor dl_load().

-L [değer]
--tüysüz[=değer]
Şüpheli veya diğer AWK'lara taşınabilir olmayan yapılar hakkında uyarılar sağlayın
uygulamalar. İsteğe bağlı bir argümanla ölümcül, tiftik uyarıları ölümcül hale gelir
hatalar. Bu sert olabilir, ancak kullanımı kesinlikle gelişmeyi teşvik edecektir.
daha temiz AWK programları. İsteğe bağlı bir argümanla geçersiz, sadece hakkında uyarılar
aslında geçersiz olan şeyler verilir. (Bu henüz tam olarak uygulanmadı.)

-M
--bignum
Rakamlar üzerinde keyfi hassas aritmetiği zorla. Bu seçeneğin aşağıdaki durumlarda etkisi yoktur: ahmak
GNU MPFR ve MP kitaplıklarını kullanmak için derlenmez.

-n
--ondalık olmayan veri
Giriş verilerindeki sekizli ve onaltılı değerleri tanır. kullanım Re-Tweet seçenek ile harika
Dikkat!

-N
--use-lc-sayısal
Bu kuvvetler ahmak girişi ayrıştırırken yerel ayarın ondalık nokta karakterini kullanmak için
veri. POSIX standardı bu davranışı gerektirse de ve ahmak ne zaman yapar
--posix yürürlükteyse, varsayılan geleneksel davranışı takip etmek ve bir
noktanın ondalık sayı olmadığı yerlerde bile ondalık nokta olarak nokta
nokta karakteri. Bu seçenek, varsayılan davranışın tamamını geçersiz kılar.
gaddar katılık --posix seçeneği.

-o[dosya]
--güzel-baskı[=dosya]
Programın oldukça basılı bir sürümünü çıktı almak için dosya. Eğer hayırsa dosya sağlanır,
ahmak adlı bir dosya kullanır awkprof.out geçerli dizinde.

-O
--optimize etmek
Programın dahili temsili üzerine optimizasyonları etkinleştirin. Şu anda,
buna basit sabit katlama ve özyinelemeli için kuyruk çağrısı ortadan kaldırılması dahildir
fonksiyonlar. ahmak bakıcı zamanla ek optimizasyonlar eklemeyi umuyor.

-p[prof dosyası]
--profil[=prof dosyası]
Bir profil oluşturma oturumu başlatın ve profil oluşturma verilerini prof dosyası. Varsayılan
is awkprof.out. Profil, her bir ifadenin yürütme sayılarını içerir.
sol kenar boşluğunda program ve her kullanıcı tanımlı işlev için işlev çağrısı sayıları.

-P
--posix
Bu açılır uygunluk modu, aşağıdaki ek kısıtlamalarla birlikte:

· \x kaçış dizileri tanınmaz.

· Yalnızca boşluk ve sekme, şu durumlarda alan ayırıcı olarak işlev görür: FS tek bir boşluğa ayarlanır,
yeni satır yok.

· Daha sonra satırlara devam edemezsiniz. ? ve :.

· eşanlamlı func anahtar kelime için işlev tanınmıyor.

· Operatörler ** ve ** = yerine kullanılamaz ^ ve ^=.

-r
--yeniden aralık
kullanımını etkinleştir aralık ifade normal ifade eşleşmesinde (bkz. Düzenli
İfadeler, aşağıda). Aralık ifadeleri geleneksel olarak mevcut değildi.
AWK dili. POSIX standardı bunları eklemek için ekledi: awk ve yumurta ile tutarlı
herbiri. Varsayılan olarak etkindirler, ancak bu seçenek,
--geleneksel.

-S
--kum havuzu
Runs ahmak sandbox modunda, devre dışı bırakarak sistem() işlev, giriş yönlendirme ile
hat almak, ile çıktı yönlendirme baskı ve printf, ve dinamik uzantılar yükleniyor.
Komut yürütme (boru hatları aracılığıyla) da devre dışı bırakılır. Bu etkili bir şekilde engeller
komut dosyasının yerel kaynaklara erişmesini engelleyin (üzerinde belirtilen dosyalar hariç)
Komut satırı).

-t
--lint-eski
Orijinal sürümüne taşınabilir olmayan yapılar hakkında uyarılar sağlayın
UNIX awk.

-V
--versiyon
Bu özel kopya için sürüm bilgilerini yazdırın ahmak standart çıktıda.
Bu, esas olarak, şu anki kopyanın olup olmadığını bilmek için kullanışlıdır. ahmak sisteminizde açık
Özgür Yazılım Vakfı'nın dağıttığı her şeyle ilgili olarak bugüne kadar.
Bu, hataları bildirirken de yararlıdır. (Başına GNU kodlama Standartlar, bunlar
seçenekler anında ve başarılı bir çıkışa neden olur.)

-- Seçeneklerin sonuna işaret edin. Bu, AWK için daha fazla argümana izin vermek için kullanışlıdır.
kendisini “-” ile başlayacak şekilde programlayın. Bu, argümanla tutarlılık sağlar
diğer birçok POSIX programı tarafından kullanılan ayrıştırma kuralı.

Uyumluluk modunda, diğer seçenekler geçersiz olarak işaretlenir, ancak aksi halde
görmezden gelindi. Normal çalışmada, program metni sağlandığı sürece bilinmeyen seçenekler
AWK programına aktarılır. ARGV işlemek için dizi. Bu özellikle
“#!” aracılığıyla AWK programlarını çalıştırmak için kullanışlıdır. yürütülebilir yorumlayıcı mekanizması.

POSIX uyumluluğu için, -W seçeneği, ardından uzun bir seçeneğin adı kullanılabilir.

AWK PROGRAMI UYGULAMA


Bir AWK programı, bir dizi kalıp-eylem ifadesinden ve isteğe bağlı işlevden oluşur.
tanımlar.

@Dahil etmek "Dosya"
@yük "Dosya"
model { aksiyon ifadeleri }
işlev isim(parametre liste) { ifadeleri }

gevezelik önce program kaynağını şuradan okur: program dosyası(s) belirtilmişse, argümanlardan
için --kaynak, veya komut satırındaki ilk seçenek olmayan bağımsız değişkenden. NS -f ve
--kaynak seçenekler komut satırında birden çok kez kullanılabilir. gevezelik programı okur
sanki tüm metin program dosyasıs ve komut satırı kaynak metinleri birleştirildi
bir arada. Bu, AWK işlevleri kitaplıkları oluşturmak için kullanışlıdır.
bunları kullanan her yeni AWK programına dahil edin. Ayrıca karıştırma yeteneği sağlar
komut satırı programları ile kitaplık işlevleri.

Ayrıca ile başlayan satırlar @Dahil etmek içine diğer kaynak dosyaları dahil etmek için kullanılabilir
programınız, kitaplık kullanımını daha da kolaylaştırır. Bu, aşağıdakileri kullanmaya eşdeğerdir: -i seçeneği.

ile başlayan satırlar @yük programınıza paylaşılan kitaplıkları yüklemek için kullanılabilir. Bu
kullanmaya eşdeğerdir. -l seçeneği.

ortam değişkeni AWKPATH kaynak dosyaları bulurken kullanılacak bir arama yolunu belirtir
ile adlandırılmış -f ve -i seçenekler. Bu değişken yoksa, varsayılan yol
".:/usr/local/share/awk". (Gerçek dizin, nasıl olduğuna bağlı olarak değişebilir. ahmak oldu
inşa edilmiş ve kurulmuş.) Eğer bir dosya ismi verilmişse -f seçenek bir “/” karakteri içeriyor, hayır
yol araması yapılır.

ortam değişkeni AWKLIBPATH kaynak bulunurken kullanılacak bir arama yolu belirtir
ile adlandırılmış dosyalar -l seçenek. Bu değişken yoksa, varsayılan yol
"/usr/local/lib/gawk". (Gerçek dizin, nasıl olduğuna bağlı olarak değişebilir. ahmak inşaa edilmiş
ve yüklü.)

gevezelik AWK programlarını aşağıdaki sırayla yürütür. İlk olarak, tüm değişken atamaları
aracılığıyla belirtilen -v seçeneği gerçekleştirilir. Sonraki, ahmak programı derler
iç formu. Sonra, ahmak içindeki kodu yürütür BAŞLA kural(lar) (varsa) ve ardından
adındaki her dosyayı okumaya devam eder. ARGV dizi (en fazla ARGV[ARGC]). yoksa
komut satırında adlandırılmış dosyalar, ahmak standart girişi okur.

Komut satırındaki bir dosya adı şu şekildeyse var=val bir değişken olarak kabul edilir
atama. Değişken var değer atanacak val. (Bu, herhangi bir
BAŞLA kural(lar) çalıştırılmıştır.) Komut satırı değişken ataması en çok aşağıdakiler için yararlıdır:
AWK'nın girdinin nasıl bölündüğünü kontrol etmek için kullandığı değişkenlere dinamik olarak değerler atama
alanlar ve kayıtlar. Birden fazla geçiş gerekiyorsa durumu kontrol etmek için de yararlıdır
tek bir veri dosyası üzerinden

Belirli bir elemanın değeri ise ARGV boş (""), ahmak üzerinden atlar.

Her girdi dosyası için, eğer bir BAŞLANGIÇ kural var, ahmak önce ilişkili kodu yürütür
dosya içeriğinin işlenmesi. Benzer şekilde, ahmak ile ilişkili kodu yürütür
SON DOSYA dosyayı işledikten sonra.

Girişteki her kayıt için, ahmak herhangi biriyle eşleşip eşleşmediğini görmek için testler model AWK'da
programı. Kaydın eşleştiği her desen için, ahmak ilişkili yürütür aksiyon.
Kalıplar, programda meydana geldikleri sırayla test edilir.

Son olarak, tüm girdiler tükendikten sonra, ahmak içindeki kodu yürütür END kural(lar) (eğer
herhangi).

Komuta çizgi Dizinler
POSIX'e göre, üzerinde adlandırılmış dosyalar awk komut satırı metin dosyaları olmalıdır. Davranış
değilse “tanımsız”dır. Çoğu sürümleri awk komuttaki bir dizini tedavi et
ölümcül bir hata olarak satır.

4.0 sürümünden başlayarak ahmak, komut satırındaki bir dizin bir uyarı verir, ancak
aksi takdirde atlanır. Eğer herhangi biri --posix or --geleneksel seçenekler verilir, daha sonra
ahmak komut satırındaki dizinleri önemli bir hata olarak ele almaya geri döner.

DEĞİŞKENLER, KAYITLAR VE ALANLAR


AWK değişkenleri dinamiktir; ilk kullanıldıklarında ortaya çıkarlar. Onların
değerler, nasıl olduklarına bağlı olarak ya kayan noktalı sayılar ya da dizgeler ya da her ikisidir.
kullanılmış. AWK ayrıca tek boyutlu dizilere sahiptir; çok boyutlu diziler olabilir
simüle edildi. gevezelik gerçek dizi dizileri sağlar; görmek Diziler, aşağıda. Önceden tanımlanmış birkaç
değişkenler bir program çalışırken ayarlanır; bunlar gerektiği gibi açıklanmış ve aşağıda özetlenmiştir.

Kayıtlar
Normalde kayıtlar yeni satır karakterleriyle ayrılır. Kayıtların nasıl olduğunu kontrol edebilirsiniz
yerleşik değişkene değerler atayarak ayrılmış RS. Eğer RS herhangi bir tek karakter,
bu karakter kayıtları ayırır. Aksi halde, RS düzenli bir ifadedir. içindeki metin
bu normal ifadeyle eşleşen girdi, kaydı ayırır. Ancak, içinde
uyumluluk modunda, dize değerinin yalnızca ilk karakteri ayırmak için kullanılır
kayıtlar. Eğer RS null dizeye ayarlanır, ardından kayıtlar boş satırlarla ayrılır.
Ne zaman RS boş dizeye ayarlandığında, yeni satır karakteri her zaman alan ayırıcı olarak işlev görür,
herhangi bir değere ek olarak FS olabilir.

Alanlar
Her giriş kaydı okunduğunda, ahmak rekoru ikiye böler alanlarıdeğerini kullanarak,
FS alan ayırıcı olarak değişken. Eğer FS tek bir karakterdir, alanlar ile ayrılır
o karakter. Eğer FS boş dize ise, her bir karakter bir
ayrı alan. Aksi halde, FS tam bir düzenli ifade olması bekleniyor. İçinde
özel durum ki FS tek bir boşluktur, alanlar boşluklar ve/veya sekmelerle ayrılır
ve/veya yeni satırlar. (Ama bölüme bakın POSIX UYUMLULUK, altında). NOT: Değeri
YOKSAY (aşağıya bakın) ayrıca alanların ne zaman bölüneceğini de etkiler. FS düzenli bir ifadedir,
ve kayıtların ne zaman ayrıldığı RS düzenli bir ifadedir.

Eğer ALAN GENİŞLİKLERİ değişken, boşlukla ayrılmış bir sayı listesine ayarlanır, her alan
sabit genişliğe sahip olması bekleniyor ve ahmak belirtilen genişlikleri kullanarak kaydı böler.
Değeri FS göz ardı edilir. Yeni bir değer atama FS or FPAT kullanımını geçersiz kılar
ALAN GENİŞLİKLERİ.

Benzer şekilde, eğer FPAT değişken, normal bir ifadeyi temsil eden bir dizeye ayarlanır, her biri
alan, bu normal ifadeyle eşleşen metinden oluşur. Bu durumda, düzenli
ifadesi, alanları ayıran metin yerine alanların kendilerini tanımlar.
Yeni bir değer atama FS or ALAN GENİŞLİKLERİ kullanımını geçersiz kılar FPAT.

Giriş kaydındaki her alan, konumuna göre referans alınabilir: $1, $2Ve benzeri. $0
tüm kayıttır. Alanlara sabitler tarafından başvurulması gerekmez:

n = 5
baskı $n

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

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

Var olmayan alanlara yapılan referanslar (örn. $NF) boş dizeyi üretin.
Ancak, var olmayan bir alana atama (örn. $(NF+2) = 5) değerini arttırır NF,
değerleri olarak boş dizeyle araya giren alanları oluşturur ve değere neden olur
of $0 değerleri ile ayrılmış alanlar ile yeniden hesaplanacak OFS. Referanslar
negatif numaralı alanlara geçiş önemli bir hataya neden olur. azalan NF değerlerine neden olur
kaybedilecek yeni değeri geçen alanlar ve $0 ile yeniden hesaplanacak
değerleri ile ayrılan alanlar OFS.

Mevcut bir alana bir değer atamak, şu durumlarda tüm kaydın yeniden oluşturulmasına neden olur. $0 is
referanslı. Benzer şekilde, bir değer atamak $0 kaydın yeniden bölünmesine neden olur,
alanlar için yeni değerler.

Gömme Değişkenler
gevezelik'nin yerleşik değişkenleri şunlardır:

ARGC Komut satırı argümanlarının sayısı (seçenekleri içermez ahmakYa da
program kaynağı).

ARGİND içindeki indeks ARGV işlenmekte olan mevcut dosyanın

ARGV Komut satırı argümanları dizisi. Dizi 0'dan indekslenir ARGC - 1.
İçeriğin dinamik olarak değiştirilmesi ARGV veri için kullanılan dosyaları kontrol edebilir.

BİN MODU POSIX olmayan sistemlerde, tüm dosya G/Ç'leri için "ikili" modun kullanımını belirtir.
1, 2 veya 3 sayısal değerleri, giriş dosyalarını, çıkış dosyalarını veya tümünü belirtir.
dosyalar sırasıyla ikili G/Ç kullanmalıdır. dize değerleri "r"ya da "w"
sırasıyla girdi dosyalarının veya çıktı dosyalarının ikili kullanması gerektiğini belirtin
G/Ç. dize değerleri "rw" or "wr" tüm dosyaların ikili kullanması gerektiğini belirtin
G/Ç. Diğer herhangi bir dize değeri olarak kabul edilir "rw", ancak bir uyarı oluşturur
mesaj.

CONVFMT Sayılar için dönüştürme formatı, "%.6g", varsayılan olarak.

ÇEVRE Geçerli ortamın değerlerini içeren bir dizi. dizi
ortam değişkenleri tarafından indekslenir, her bir eleman bunun değeridir
değişken (örn. ÇEVRE["EV"] olabilir, "/ev/arnold"). Bu diziyi değiştirmek
programların gördüğü ortamı etkilemez. ahmak yoluyla ortaya çıkar
yeniden yönlendirme veya sistem() fonksiyonu.

HATA Bir sistem hatası oluşursa, hat almak, okuma sırasında
için hat almakveya bir sırasında kapat(), Daha sonra HATA açıklayan bir dize içerecektir
hata. Değer, İngilizce olmayan yerel ayarlarda çeviriye tabidir.

ALAN GENİŞLİKLERİ Alan genişliklerinin boşlukla ayrılmış listesi. ayarlandığında, ahmak girişi ayrıştırır
değerini kullanmak yerine sabit genişlikteki alanlara FS olarak değişken
alan ayırıcı Görmek Alanlar, yukarıda.

DOSYA ADI Geçerli girdi dosyasının adı. Komutta hiçbir dosya belirtilmemişse
satırı, değeri DOSYA ADI NS "-". Yine de, DOSYA ADI içinde tanımsız
BAŞLA kural (tarafından ayarlanmadıkça hat almak).

FNR Geçerli giriş dosyasındaki giriş kayıt numarası.

FPAT Bir kayıttaki alanların içeriğini açıklayan normal bir ifade. Ne zaman
seti, ahmak girişi, alanların normal ile eşleştiği alanlara ayrıştırır
ifadesinin değerini kullanmak yerine FS alan olarak değişken
ayırıcı. Görmek Alanlar, yukarıda.

FS Giriş alanı ayırıcı, varsayılan olarak bir boşluktur. Görmek Alanlar, yukarıda.

İŞLEVLER Dizinleri ve karşılık gelen değerleri tüm kullanıcı adları olan bir dizi.
programda tanımlı veya uzantılı fonksiyonlar. NOT:
silmek ile ifade İŞLEVLER dizisi.

YOKSAY Tüm normal ifade ve dize işlemlerinin büyük/küçük harf duyarlılığını kontrol eder.
If YOKSAY sıfır olmayan bir değere sahip, ardından dize karşılaştırmaları ve desen
kurallarda eşleşme, alan bölme ile FS ve FPAT, ile ayırarak kayıt
RS, ile eşleşen normal ifade ~ ve !~, Ve gensub(), gsub(),
dizin (), eşleşme(), patsplit(), Bölünmüş(), ve alt() yerleşik işlevlerin tümü yoksay
normal ifade işlemleri yaparken durum. NOT: Dizi aboneliği
değil etkilenmiş. Ancak asort () ve çeşitli() fonksiyonlar etkilenir.
Böylece, eğer YOKSAY sıfıra eşit değil, /ab/ tüm dizelerle eşleşir
"ab", "AB", "Ab", ve "AB". Tüm AWK değişkenlerinde olduğu gibi, başlangıç ​​değeri
YOKSAY sıfırdır, bu nedenle tüm normal ifade ve dize işlemleri
normalde büyük/küçük harfe duyarlıdır.

tiftik dinamik kontrolünü sağlar. --tüysüz bir AWK programı içinden seçenek.
Gerçek olduğunda, ahmak tiftik uyarıları yazdırır. Yanlış olduğunda, değildir. atandığında
dize değeri "ölümcül", tüy bırakmayan uyarılar, tıpkı
--lint=ölümcül. Diğer herhangi bir gerçek değer yalnızca uyarıları yazdırır.

NF Geçerli giriş kaydındaki alanların sayısı.

NR Şimdiye kadar görülen toplam giriş kaydı sayısı.

OFMT Sayılar için çıktı formatı, "%.6g", varsayılan olarak.

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

ORS Çıkış kaydı ayırıcısı, varsayılan olarak bir yeni satırdır.

ÖNCESİ Rastgele hassas kayan noktalı sayıların çalışma kesinliği, 53 ile
Varsayılan.

PROSİNFO Bu dizinin öğeleri, çalışan AWK ile ilgili bilgilere erişim sağlar.
programı. Bazı sistemlerde dizide elemanlar olabilir, "grup 1"
içinden "grupn" bazı n, hangi ek grupların sayısıdır
süreç vardır. Kullan in Bu öğeleri test etmek için operatör. NS
aşağıdaki öğelerin mevcut olması garanti edilir:

PROCINFO["egid"] Değeri gitgid(2) sistem çağrısı.

PROCINFO["strftime"]
için varsayılan zaman biçimi dizesi strftime().

PROCINFO["euid"] Değeri geteuid(2) sistem çağrısı.

PROCINFO["FS"] "FS" alan bölme ile FS yürürlükte, "FPAT" if
alan bölme ile FPAT yürürlükte veya "ALAN GENİŞLİKLERİ"
alan bölme ile ALAN GENİŞLİKLERİ yürürlüktedir.

PROCINFO["tanımlayıcılar"]
Kullanılan tüm tanımlayıcıların adlarıyla indekslenen bir alt dizi
AWK programının metninde. Değerler neyi gösterir
ahmak bittikten sonra tanımlayıcıları bilir
programı ayrıştırma; onlar değil güncellenirken
program çalışır. Her tanımlayıcı için,
eleman aşağıdakilerden biridir:

"dizi"
Tanımlayıcı bir dizidir.

"yerleşik"
Tanımlayıcı yerleşik bir işlevdir.

"uzantı"
Tanımlayıcı, aracılığıyla yüklenen bir uzantı işlevidir.
@yük or -l.

"skaler"
Tanımlayıcı bir skalerdir.

"yazılmamış"
Tanımlayıcı türlenmemiş (bir
skaler veya dizi, ahmak henüz bilmiyor).

"kullanıcı" Tanımlayıcı, kullanıcı tanımlı bir işlevdir.

PROCINFO["gid"] Değeri gitgide(2) sistem çağrısı.

PROCINFO["pgrpid"] Geçerli işlemin işlem grubu kimliği.

PROCINFO["pid"] Geçerli işlemin işlem kimliği.

PROCINFO["ppid"] Geçerli işlemin üst işlem kimliği.

PROCINFO["uid"] Değeri gituid(2) sistem çağrısı.

PROCINFO["sıralanmış_in"]
Bu eleman mevcutsa PROSİNFO, o zaman değeri
dizi öğelerinin geçiş sırasını kontrol eder
in için döngüler. Desteklenen değerler "@ind_str_asc",
"@ind_num_asc", "@val_type_asc", "@val_str_asc",
"@val_num_asc", "@ind_str_desc", "@ind_num_desc",
"@val_type_desc", "@val_str_desc", "@val_num_desc", ve
"@Sınıflandırılmamış". Değer ayrıca herhangi birinin adı da olabilir.
aşağıdaki gibi tanımlanan karşılaştırma fonksiyonu:

işlev cmp_func(i1, v1, i2, v2)

nerede i1 ve i2 endekslerdir ve v1 ve v2 olan
karşılaştırılan iki öğenin karşılık gelen değerleri.
Daha küçük, eşit veya daha büyük bir sayı döndürmelidir
dizinin elemanlarının nasıl olduğuna bağlı olarak 0'dan
Sipariş verilecek.

PROCINFO["giriş", "READ_TIMEOUT"]
Verileri okumak için milisaniye cinsinden zaman aşımı giriş,
nerede giriş bir yeniden yönlendirme dizesi veya bir dosya adıdır. Bir değer
sıfır veya sıfırdan küçük olması zaman aşımı olmadığı anlamına gelir.

PROCINFO["mpfr_version"]
GNU MPFR kitaplığının keyfi için kullanılan sürümü
hassas sayı desteği ahmak. Bu giriş değil
MPFR desteği derlenmemişse mevcut ahmak.

PROCINFO["gmp_version"]
GNU MP kitaplığının keyfi olarak kullanılan sürümü
hassas sayı desteği ahmak. Bu giriş değil
MPFR desteği derlenmemişse mevcut ahmak.

PROCINFO["prec_max"]
GNU MPFR kitaplığı tarafından desteklenen maksimum hassasiyet
keyfi hassas kayan noktalı sayılar için. Bu
MPFR desteği derlenmemişse giriş mevcut değildir.
ahmak.

PROCINFO["prec_min"]
GNU MPFR kitaplığı tarafından izin verilen minimum kesinlik
keyfi hassas kayan nokta sayıları. Bu giriş
MPFR desteği derlenmemişse mevcut değildir ahmak.

PROCINFO["api_major"]
Uzantı API'sinin ana sürümü. Bu giriş değil
dinamik uzantılar yüklenemiyorsa mevcuttur.

PROCINFO["api_minor"]
Uzantı API'sinin alt sürümü. Bu giriş değil
dinamik uzantılar yüklenemiyorsa mevcuttur.

PROCINFO["sürüm"] versiyonu ahmak.

YUVARLAK MOD Sayılar üzerinde keyfi hassas aritmetik için kullanılacak yuvarlama modu,
varsayılan "N", (IEEE-754 roundTiesToEven modu). Kabul edilen değerler "N", or
"N" roundTiesToEven için, "U" or "sen" roundTowardPositive için, "D" or "d" için
yuvarlakDoğruNegatif, "Z" or "z" roundTowardZero için ve sürümünüz varsa
GNU MPFR kitaplığı bunu destekler, "A" or "A" roundTiesToAway için.

RS Giriş kaydı ayırıcısı, varsayılan olarak yeni satırdır.

RT Kayıt sonlandırıcı. gevezelik setleri RT eşleşen giriş metnine
tarafından belirtilen karakter veya normal ifade RS.

BAŞLAT Eşleşen ilk karakterin dizini eşleşme(); 0 eşleşme yoksa. (Bu
karakter indekslerinin birden başladığını ima eder.)

UZUNLUK Eşleşen dizenin uzunluğu eşleşme(); -1 eşleşme yoksa.

ALT BÖLÜM Dizi öğelerinde birden çok aboneyi ayırmak için kullanılan karakter,
varsayılan "\034".

SİMTAB Dizinleri şu anda tanımlanmış tüm global değişkenlerin adları olan bir dizi
ve programdaki diziler. Dizi, okumak için dolaylı erişim için kullanılabilir
veya bir değişkenin değerini yazın:

foo = 5
SYMTAB["foo"] = 4
baskı foo # baskılar 4

The dizi() işlevi, içindeki bir öğenin olup olmadığını test etmek için kullanılabilir. SİMTAB bir
dizi. kullanamazsınız silmek ile ifade SİMTAB dizisi.

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

Diziler
Diziler, köşeli parantezler ([ ve ]). Eğer
ifade bir ifade listesidir (İfade, İfade ...) o zaman dizi indisi bir dizgedir
ile ayrılmış, her bir ifadenin (dize) değerinin birleştirilmesinden oluşur.
değeri ALT BÖLÜM değişken. Bu tesis, çok boyutlu simülasyonu simüle etmek için kullanılır.
diziler. Örneğin:

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

dizeyi atar "Merhaba, dünya\n" dizinin elemanına x tarafından indekslenen
dizi "A\034B\034C". AWK'daki tüm diziler ilişkiseldir, yani dizi değerlerine göre indekslenir.

özel operatör in bir dizinin bir dizinden oluşan bir dizine sahip olup olmadığını test etmek için kullanılabilir.
özel değer:

if (değer in dizi)
baskı dizi[val]

Dizinin birden çok abonesi varsa, şunu kullanın: (ben, j) in dizi.

The in yapı aynı zamanda bir için bir öğenin tüm öğelerini yinelemek için döngü
dizi. Ancak (ben, j) in dizi yapı yalnızca testlerde çalışır, için döngüler.

kullanılarak bir diziden bir eleman silinebilir. silmek Beyan. silmek ifade
sadece diziyi belirterek bir dizinin tüm içeriğini silmek için de kullanılabilir
alt simge olmadan isim.

ahmak gerçek çok boyutlu dizileri destekler. Bu tür dizilerin olmasını gerektirmez
C veya C++'da olduğu gibi ``dikdörtgen''. Örneğin:

bir[1] = 5
bir[2][1] = 6
bir[2][2] = 7

NOT: Anlatmanız gerekebilir ahmak kullanmak için bir dizi öğesinin gerçekten bir alt dizi olduğunu
o nerede ahmak bir dizi bekler (ikinci argümandaki gibi Bölünmüş()). Yapabilirsin
bu, alt dizide bir öğe oluşturup ardından onu silerek silmek
ifadesi.

Değişken Yazma Ve Dönüştürme
Değişkenler ve alanlar (kayan noktalı) sayılar veya dizeler veya her ikisi olabilir. değer nasıl
Bir değişkenin yorumlanması, bağlamına bağlıdır. Sayısal bir ifadede kullanılırsa,
bir sayı olarak ele alınacaktır; bir dize olarak kullanılırsa, bir dize olarak kabul edilecektir.

Bir değişkeni sayı olarak ele almaya zorlamak için ona 0 ekleyin; olarak muamele görmeye zorlamak
dize, boş dizeyle birleştirin.

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

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

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

değişken b dize değerine sahip "12" ve yok "12.00".

NOT: POSIX modunda çalışırken (örneğin, --posix seçeneği), yerel ayara dikkat edin
ayarlar, ondalık sayıların ele alınma şeklini etkileyebilir: ondalık ayırıcı
beslediğiniz numaralar ahmak yerel ayarınızın beklediğine uygun olmalıdır,
virgül (,) veya nokta (.).

gevezelik karşılaştırmaları şu şekilde yapar: İki değişken sayısal ise, bunlar karşılaştırılır
sayısal olarak. Bir değer sayısal ise ve diğerinin "sayısal" olan bir dize değeri varsa
string”, daha sonra karşılaştırmalar sayısal olarak da yapılır. Aksi takdirde, sayısal değer
bir dizeye dönüştürülür ve bir dize karşılaştırması yapılır. İki dize karşılaştırılır,
tabii ki, dizeler olarak.

gibi dize sabitlerinin olduğunu unutmayın. "57"vardır değil sayısal dizeler, bunlar dizedir
sabitler. "Sayısal dize" fikri yalnızca alanlar için geçerlidir, hat almak giriş, DOSYA ADI,
ARGV elementler, ÇEVRE tarafından oluşturulan bir dizinin elemanları ve elemanları Bölünmüş() or
patsplit() bunlar sayısal dizilerdir. Temel fikir şu ki kullanıcı giriş, ve sadece kullanıcı
sayısal görünen girdi bu şekilde ele alınmalıdır.

Sekizli ve Onaltılık Sabitler
AWK program kaynak kodunuzda C-stili sekizli ve onaltılı sabitleri kullanabilirsiniz. İçin
örneğin, sekizlik değer 011 ondalık sayıya eşittir 9, ve onaltılık değer 0x11 is
ondalık 17'ye eşittir.

dizi Sabitler
AWK'daki dize sabitleri, çift tırnak arasına alınmış karakter dizileridir (örneğin
"değer"). Dizeler içinde, belirli kaçış dizileri C'de olduğu gibi tanınırlar. Bunlar:

\\ Gerçek bir 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.

\xhex basamak
Aşağıdaki onaltılık rakamlar dizisi tarafından temsil edilen karakter \x.
ISO C'de, aşağıdaki tüm onaltılık basamaklar kaçışın bir parçası olarak kabul edilir
sıra. (Bu özellik bize dil tasarımı hakkında bir şeyler söylemelidir:
komite.) Örn. "\x1B" ASCII ESC (kaçış) karakteridir.

\ddd 1, 2 veya 3 basamaklı sekizlik basamak dizisiyle temsil edilen karakter. Örneğin,
"\033" ASCII ESC (kaçış) karakteridir.

\c gerçek karakter c.

Kaçış dizileri, sabit düzenli ifadeler içinde de kullanılabilir (örn.
/[ \t\f\n\r\v]/ boşluk karakterleriyle eşleşir).

Uyumluluk modunda, sekizli ve onaltılı kaçışla temsil edilen karakterler
diziler, düzenli ifade sabitlerinde kullanıldığında tam anlamıyla ele alınır. Böylece, /a\52b/
eşdeğerdir /a\*b/.

DESENLER VE EYLEMLER


AWK, çizgi yönelimli bir dildir. Önce desen, sonra eylem gelir. Eylem
ifadeler ektedir { ve }. Ya desen eksik olabilir ya da eylem
eksik olabilir, ama elbette ikisi birden değil. Desen eksikse, eylem yürütülür
Her bir giriş kaydı için. Eksik bir eylem eşdeğerdir

{ baskı }

hangi tüm kaydı yazdırır.

Yorumlar ile başlar # karakter ve satırın sonuna kadar devam edin. Boş satırlar
ifadeleri ayırmak için kullanılabilir. Normalde, bir ifade yeni bir satırla biter, ancak
virgülle biten satırlar için durum böyle değildir, {, ?, :, &&ya da ||. ile biten satırlar do
or başka ayrıca açıklamalarının aşağıdaki satırda otomatik olarak devam etmesini sağlayın. İçinde
diğer durumlarda, bir satıra “\” ile sonlandırılarak devam edilebilir, bu durumda yeni satır
görmezden geldi.

Bir satıra “;” ile ayırarak birden fazla ifade yerleştirilebilir. Bu .... için geçerlidir
hem bir model-eylem çiftinin eylem kısmındaki ifadeler (olağan durum) ve
kalıp-eylem ifadelerinin kendilerine.

desenler
AWK desenleri aşağıdakilerden biri olabilir:

BAŞLA
END
BAŞLANGIÇ
SON DOSYA
/düzenli ifade/
ilişkisel ifade
model && model
model || model
model ? model : model
(model)
! model
pattern1, pattern2

BAŞLA ve END girdiye karşı test edilmeyen iki özel kalıp türüdür.
Hepsinin aksiyon kısmı BAŞLA tüm ifadeler sanki birleştirilmiş gibi desenler birleştirilir
tek tek yazılır BAŞLA kural. Herhangi bir girdi okunmadan önce yürütülürler.
Benzer şekilde, tüm END kurallar birleştirilir ve tüm girdiler tükendiğinde (veya
Ne zaman çıkış ifadesi yürütülür). BAŞLA ve END desenler diğerleriyle birleştirilemez
desen ifadelerinde desenler. BAŞLA ve END desenler eksik eylem parçalarına sahip olamaz.

BAŞLANGIÇ ve SON DOSYA gövdeleri daha önce yürütülen ek özel kalıplardır.
her komut satırı giriş dosyasının ilk kaydını okumak ve son kaydı okuduktan sonra
her dosyanın. İçinde BAŞLANGIÇ kural, değeri HATA eğer boş dize olacak
dosya başarıyla açıldı. Aksi takdirde, dosyayla ilgili bir sorun vardır ve
kod kullanmalı sonraki dosya atlamak için. Bu yapılmazsa, ahmak her zamanki ölümcül üretir
açılamayan dosyalar için hata.

İçin /düzenli ifade/ desenler, ilişkili ifade her giriş için yürütülür
normal ifadeyle eşleşen kayıt. Normal ifadeler aşağıdakilerle aynıdır.
yumurta(1) ve aşağıda özetlenmiştir.

A ilişkisel ifade bölümünde aşağıda tanımlanan operatörlerden herhangi birini kullanabilir.
hareketler. Bunlar genellikle belirli alanların belirli normal ifadelerle eşleşip eşleşmediğini test eder.

The &&, ||, ve ! operatörler sırasıyla mantıksal VE, mantıksal VEYA ve mantıksal DEĞİL'dir,
C'deki gibi. C'deki gibi kısa devre değerlendirmesi yaparlar ve daha fazlasını birleştirmek için kullanılırlar.
ilkel desen ifadeleri. Çoğu dilde olduğu gibi, parantezler değiştirmek için kullanılabilir.
değerlendirme sırası.

The ?: operatör, C'deki aynı operatör gibidir. İlk kalıp doğruysa, o zaman
test için kullanılan kalıp ikinci kalıptır, aksi halde üçüncü kalıptır. sadece biri
ikinci ve üçüncü kalıplar değerlendirilir.

The pattern1, pattern2 ifade biçimine denir menzil model. Hepsiyle eşleşir
eşleşen bir kayıtla başlayan giriş kayıtları pattern1ve bir rekora kadar devam
eşleşen pattern2, dahil. Başka bir desen türü ile birleşmez
ifadesi.

Düzenli İfadeler
Normal ifadeler, içinde bulunan genişletilmiş türdür. yumurta. Onlar karakterlerden oluşur
aşağıdaki gibidir:

c Meta karakter olmayanla eşleşir c.

\c Gerçek karakterle eşleşir c.

. Herhangi bir karakterle eşleşir dahil olmak üzere Yeni hat.

^ Bir dizenin başlangıcıyla eşleşir.

$ Bir dizenin sonuyla eşleşir.

[ABC...] Bir karakter listesi: karakterlerden herhangi biriyle eşleşir ABC.... bir
bir tire ile ayırarak karakter aralığı.

[^ABC...] Olumsuz karakter listesi: dışında herhangi bir karakterle eşleşir ABC....

r1|r2 Alternatif: ikisinden biriyle eşleşir r1 or r2.

r1r2 Birleştirme: eşleşmeler r1, ve sonra r2.

r+ Bir veya daha fazla eşleşir rVar.

r* Sıfır veya daha fazla eşleşir rVar.

r? Sıfır veya bir ile eşleşir rVar.

(r) gruplandırma: eşleşmeler r.

r{n}
r{n,}
r{n,m} Parantez içindeki bir veya iki sayı, bir aralık ifade. Varsa
parantez içinde bir sayı, önceki normal ifade r Tekrarlanır n
zamanlar. Virgülle ayrılmış iki sayı varsa, r Tekrarlanır n için m
zamanlar. Virgülden sonra bir sayı varsa, o zaman r en azından tekrarlanır
n kez.

\y Sözcüğün başındaki veya sonundaki boş dizeyle eşleşir.

\B Bir sözcük içindeki boş dizeyle eşleşir.

\< Sözcüğün başındaki boş dizeyle eşleşir.

\> Bir kelimenin sonundaki boş dizeyle eşleşir.

\s Herhangi bir boşluk karakteriyle eşleşir.

\S Herhangi bir boşluk olmayan karakterle eşleşir.

\w Herhangi bir kelimeyi oluşturan karakterle (harf, rakam veya alt çizgi) eşleşir.

\W Kelime bileşeni olmayan herhangi bir karakterle eşleşir.

\` Bir arabelleğin (dize) başlangıcındaki boş dizeyle eşleşir.

\' Bir arabelleğin sonundaki boş dizeyle eşleşir.

Dize sabitlerinde geçerli olan kaçış dizileri (bkz. dizi Sabitler) da
normal ifadelerde geçerlidir.

Karakter sınıflar POSIX standardında tanıtılan bir özelliktir. Bir karakter sınıfı bir
belirli bir niteliğe sahip karakter listelerini açıklamak için özel gösterim, ancak
gerçek karakterlerin ülkeden ülkeye ve/veya ülkeden ülkeye değişebildiği durumlarda
karakter kümesinden karakter kümesine. Örneğin, alfabetik nedir kavramı
karakter ABD ve Fransa'da farklıdır.

Bir karakter sınıfı yalnızca normal bir ifadede geçerlidir içeride bir karakterin parantezleri
liste. Karakter sınıfları şunlardan oluşur: [:, sınıfı belirten bir anahtar kelime ve :].
POSIX standardı tarafından tanımlanan karakter sınıfları şunlardır:

[:alnum:] Alfanümerik karakterler.

[:alfa:] Alfabetik karakterler.

[:boşluk:] Boşluk veya sekme karakterleri.

[:kontrol:] Kontrol karakterleri.

[:hane:] Sayısal karakterler.

[:grafik:] Hem yazdırılabilir hem de görünür karakterler. (Bir boşluk yazdırılabilir, ancak
görünürken, bir a ikiside.)

[:daha düşük:] Küçük harfli alfabetik karakterler.

[:Yazdır:] Yazdırılabilir karakterler (kontrol karakterleri olmayan karakterler.)

[:nokta:] Noktalama işaretleri (harf, rakam, kontrol olmayan karakterler
karakterler veya boşluk karakterleri).

[:Uzay:] Boşluk karakterleri (birkaç isim vermek gerekirse boşluk, sekme ve form beslemesi gibi).

[:üst:] Büyük harfli alfabetik karakterler.

[:xrakam:] Onaltılık basamak olan karakterler.

Örneğin, POSIX standardından önce, alfasayısal karakterleri eşleştirmek için
yazmak zorundaydım /[A-Za-z0-9]/. Karakter setinizde başka alfabetik karakterler varsa,
bu onlarla eşleşmeyecektir ve karakter kümeniz ASCII'den farklı şekilde harmanlanmışsa, bu
ASCII alfasayısal karakterlerle bile eşleşmeyebilir. POSIX karakter sınıfları ile,
Yazabilirsin /[[:alnum:]]/ve bu, içindeki alfabetik ve sayısal karakterlerle eşleşir.
karakter setiniz, ne olursa olsun.

Karakter listelerinde iki ek özel dizi görüntülenebilir. Bunlar ASCII olmayanlar için geçerlidir
tek sembollere sahip olabilen karakter kümeleri ( harmanlama elemanları) bunlar
birden fazla karakterle ve aynı zamanda birkaç karakterle temsil edilir.
için eşdeğer harmanlama, veya sıralama, amaçlar. (Örneğin, Fransızca'da düz bir "e" ve bir
ciddi aksanlı “`” eşdeğerdir.)

Harmanlama Sembolleri
Bir harmanlama sembolü, içine alınmış çok karakterli bir harmanlama öğesidir. [. ve .].
Örneğin, ch bir harmanlama öğesidir, o zaman [[.ch.]] düzenli bir ifadedir
bu harmanlama öğesiyle eşleşen, [kanal] düzenli bir ifadedir
ya eşleşir c or h.

Denklik Sınıfları
Bir denklik sınıfı, bir karakter listesi için yerel ayara özgü bir addır.
eş değer. Adı ektedir [= ve =]. Örneğin, ad e olabilir,
"e", "´" ve "`" ifadelerinin tümünü temsil etmek için kullanılır. Bu durumda, [[=e=]] düzenli
herhangi biriyle eşleşen ifade e, e'ya da e`.

Bu özellikler, İngilizce konuşulmayan yerlerde çok değerlidir. kütüphane fonksiyonları
o ahmak düzenli ifade eşleştirme için kullanır, şu anda yalnızca POSIX karakterini tanır
sınıflar; harmanlama sembollerini veya denklik sınıflarını tanımazlar.

The \y, \B, \<, \>, \s, \S, \w, \W, \`, ve \' operatörler özeldir ahmak; onlar
GNU düzenli ifade kitaplıklarındaki tesislere dayalı uzantılar.

Çeşitli komut satırı seçenekleri, ahmak karakterleri düzenli olarak yorumlar
ifade.

Seçenek yok
Varsayılan durumda, ahmak POSIX düzenli ifadelerinin tüm olanaklarını sağlar
ve yukarıda açıklanan GNU düzenli ifade operatörleri.

--posix
Yalnızca POSIX düzenli ifadeleri desteklenir, GNU operatörleri özel değildir.
(Örneğin, \w harfi harfine eşleşir w).

--geleneksel
Geleneksel UNIX awk normal ifadeler eşleştirilir. GNU operatörleri değil
özel ve aralıklı ifadeler kullanılamaz. Sekizli olarak tanımlanan karakterler
ve onaltılık kaçış dizileri, temsil etseler bile tam anlamıyla ele alınır.
normal ifade meta karakterleri.

--yeniden aralık
Olsa bile, normal ifadelerde aralık ifadelerine izin ver --geleneksel olmuş
sağlanan.

İşlemler
Eylem ifadeleri parantez içine alınır, { ve }. Eylem ifadeleri olağan
atama, koşullu ve döngüsel ifadeler çoğu dilde bulunur. operatörler,
kontrol ifadeleri ve mevcut giriş/çıkış ifadeleri C'dekilerden sonra modellenir.

Operatörler
AWK'daki operatörler, azalan öncelik sırasına göre şunlardır:

(...) Gruplama

$ Alan referansı.

++ -- Artırma ve eksiltme, hem önek hem de sonek.

^ Üstelleştirme (** da kullanılabilir ve ** = atama operatörü için).

+ - ! Tekli artı, tekli eksi ve mantıksal olumsuzlama.

* / % Çarpma, bölme ve modül.

+ - Toplama ve çıkarma.

uzay Dize birleştirme.

| |& Borulu G/Ç hat almak, baskı, ve printf.

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

~ !~ Normal ifade eşleşmesi, olumsuz eşleşme. NOT: Sabit bir düzenli kullanmayın
ifade (/foo/) sol tarafında bir ~ or !~. üzerinde sadece bir tane kullanın
sağ taraf. İfade /foo/ ~ exp ile aynı anlama sahiptir ((0 $ ~
/foo/) ~ exp). Bu genellikle değil ne istediğinizi.

in Dizi üyeliği.

&& Mantıksal VE.

|| Mantıksal VEYA.

?: C koşullu ifadesi. Bu forma sahip ifade1 ? ifade2 : ifade3. Eğer
ifade1 doğrudur, ifadenin değeri ifade2, aksi takdirde ifade3.
sadece biri ifade2 ve ifade3 değerlendirilir.

= += -= *= /= %= ^=
Atama. Her ikisi de mutlak atama (var = değer) ve operatör ataması
(diğer formlar) desteklenir.

Control Tablolar
Kontrol ifadeleri aşağıdaki gibidir:

if (koşul) ifade [ başka ifade ]
süre (koşul) ifade
do ifade süre (koşul)
için (ifade1; ifade2; ifade3) ifade
için (var in dizi) ifade
kırılma
devam etmek
silmek dizi[indeks]
silmek dizi
çıkış [ ifade ]
{ ifadeleri }
anahtar (ifade) {
dava değer|regex : ifade
...
[ Varsayılan: ifade ]
}

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

kapat(dosya [, Nasıl]) Dosyayı, boruyu veya ortak işlemi kapatın. isteğe bağlı Nasıl sadece olmalı
iki yönlü bir borunun bir ucunu bir ortak işleme kapatılırken kullanılır. Bilişim Teknoloji
ya bir dize değeri olmalıdır "Den" or "Adresinden".

hat almak set $0 sonraki giriş kaydından; Ayarlamak NF, NR, FNR, RT.

hat almak <dosya set $0 sonraki kayıttan dosya; ayarlamak NF, RT.

hat almak var set var sonraki giriş kaydından; Ayarlamak NR, FNR, RT.

hat almak var <dosya set var sonraki kayıttan dosya, RT.

komuta | hat almak [var]
koşmak komuta çıkışı boruya ya da $0 or var, yukarıdaki gibi ve
RT.

komuta |& hat almak [var]
koşmak komuta çıktıyı birbirine bağlayan bir ortak süreç olarak $0 or var,
yukarıdaki gibi ve RT. Ortak süreçler bir ahmak uzantı. (komuta yapabilmek
ayrıca bir soket olmak. alt bölüme bakın Özel fileto İsimler, altında.)

sonraki Geçerli giriş kaydını işlemeyi durdurun. Bir sonraki giriş kaydı
okuma ve işleme, AWK'daki ilk kalıpla başlar
programı. Girilen verilerin sonuna gelindiğinde, ahmak herhangi birini yürütür
END tüzük).

sonraki dosya Geçerli giriş dosyasını işlemeyi durdurun. Bir sonraki giriş kaydı okundu
sonraki girdi dosyasından gelir. DOSYA ADI ve ARGİND güncellenir,
FNR 1'e sıfırlanır ve işleme ilk modelle yeniden başlar
AWK programında. Girilen verilerin sonuna gelindiğinde, ahmak
herhangi birini yürütür END tüzük).

baskı Geçerli kaydı yazdırın. Çıkış kaydı ile sonlandırılır
değeri ORS.

baskı expr listesi İfadeleri yazdırın. Her ifade değeri ile ayrılır
OFS. Çıkış kaydı değeri ile sonlandırılır. ORS.

baskı expr listesi >dosya İfadeleri yazdır dosya. Her ifade ile ayrılır
değeri OFS. Çıkış kaydı değeri ile sonlandırılır.
ORS.

printf fmt, expr listesi Biçimlendirin ve yazdırın. Görmek The printf Açıklama, Aşağıda.

printf fmt, expr listesi >dosya
Biçimlendir ve yazdır dosya.

sistem (cmd satırı) Komutu yürütün cmd satırı, ve çıkış durumunu döndürün. (Bu olabilir
POSIX olmayan sistemlerde kullanılamaz.)

flush([dosya]) Açık çıktı dosyası veya boruyla ilişkili tüm arabellekleri temizleyin dosya.
If dosya eksikse veya boş dizeyse, hepsini temizleyin
çıktı dosyaları ve borular.

için ek çıktı yönlendirmelerine izin verilir baskı ve printf.

baskı ... >> dosya
Çıktıyı şuna ekler: dosya.

baskı ... | komuta
Bir boruya yazar.

baskı ... |& komuta
Bir ortak işleme veya sokete veri gönderir. (Ayrıca bkz. alt bölüm Özel fileto İsimler,
altında.)

The hat almak komut, başarı durumunda 1, dosyanın sonunda 0 ve bir hata durumunda -1 döndürür. üzerine bir
hata, HATA sorunu açıklayan bir dizeye ayarlanır.

NOT: İki yönlü bir soketin açılmasındaki başarısızlık, ölümcül olmayan bir hatanın geri döndürülmesine neden olur.
çağırma işlevi. Bir boru, ortak işlem veya soket kullanıyorsanız hat almak, Ya da baskı or
printf bir döngü içinde, sen şart kullanım kapat() komutun yeni örneklerini oluşturmak için veya
priz. AWK, geri döndüklerinde boruları, prizleri veya ortak süreçleri otomatik olarak kapatmaz
EOF.

The printf Açıklama
AWK sürümleri printf ifade ve hızlı koşu() işlevi (aşağıya bakın) kabul edin
aşağıdaki dönüştürme belirtim biçimleri:

%c Tek bir karakter. için kullanılan argüman ise %c sayısaldır, bir olarak kabul edilir
karakter ve yazdırılır. Aksi takdirde, argümanın bir dize olduğu varsayılır ve
bu dizenin yalnızca ilk karakteri yazdırılır.

%d, %i Ondalık sayı (tamsayı kısmı).

%e, %E Formun bir kayan nokta sayısı [-]d.DDDDDDe[+-]dd. %E biçim kullanır E
yerine e.

%f, %F Formun bir kayan nokta sayısı [-]ddd.DDDDDD. Sistem kitaplığı destekliyorsa
o, %F de mevcuttur. bu gibi %f, ancak özel için büyük harfler kullanır
“sayı değil” ve “sonsuz” değerleri. Eğer %F mevcut değil, ahmak kullanım %f.

%g, %G kullanım %e or %f dönüşüm, hangisi daha kısaysa, önemsiz sıfırlarla
bastırılmış. NS %G biçim kullanır %E yerine %e.

%o İşaretsiz bir sekizli sayı (aynı zamanda bir tam sayı).

%u İşaretsiz bir ondalık sayı (yine bir tam sayı).

%s Bir karakter dizisi.

%x, %X İşaretsiz bir onaltılık sayı (bir tam sayı). NS %X biçim kullanır ABCDEF yerine
abcdef.

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

İsteğe bağlı, ek parametreler arasında şunlar olabilir: % ve kontrol mektubu:

saymak$ Kullan saymak'inci argüman biçimlendirme bu noktada. Buna bir denir
konumsal belirteci ve öncelikle tercüme edilmiş sürümlerinde kullanılmak üzere tasarlanmıştır.
AWK programının orijinal metninde değil, dizeleri biçimlendirin. Bu bir ahmak
eklenti.

- İfade kendi alanı içinde sola dayalı olmalıdır.

uzay Sayısal dönüştürmeler için, pozitif değerleri bir boşlukla ve negatif değerleri önekleyin
eksi işareti ile.

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

# Belirli kontrol harfleri için bir "alternatif form" kullanın. İçin %o, bir lider tedarik
sıfır. İçin %x, ve %X, bir lider tedarik 0x or 0X sıfır olmayan bir sonuç için. İçin %e, %E,
%f ve %F, sonuç her zaman bir ondalık nokta içerir. İçin %g, ve %G, takip eden
sonuçtan sıfırlar silinmez.

0 Bir lider 0 (sıfır), çıktının doldurulması gerektiğini belirten bir bayrak görevi görür
boşluklar yerine sıfırlar. Bu, yalnızca sayısal çıktı biçimleri için geçerlidir. Bu
bayrak yalnızca alan genişliği yazdırılacak değerden daha geniş olduğunda etkilidir.

' Tek bir alıntı karakteri talimat verir ahmak yerel ayarın binlik ayırıcısını eklemek için
karakteri ondalık sayılara dönüştürmek ve ayrıca yerel ayarın ondalık noktasını kullanmak için
kayan nokta biçimlerine sahip karakter. Bu, doğru yerel ayar desteği gerektirir
C kütüphanesi ve mevcut yerel ayarın tanımında.

genişlik Alan bu genişliğe kadar doldurulmalıdır. Alan normalde
boşluklar. İle 0 bayrak, sıfırlarla doldurulur.

.ön hazırlık Yazdırma sırasında kullanılacak hassasiyeti belirten bir sayı. İçin %e, %E, %f ve
%F, biçimler, bu, sağında yazdırılmasını istediğiniz basamak sayısını belirtir.
ondalık nokta. İçin %g, ve %G biçimleri, maksimum sayısını belirtir
önemli rakamlar İçin %d, %i, %o, %u, %x, ve %X formatları belirtir
yazdırılacak minimum basamak sayısı. İçin %s, maksimum sayısını belirtir
yazdırılması gereken dizeden karakterler.

Dinamik genişlik ve ön hazırlık ISO C'nin yetenekleri printf () rutinler desteklenir. A *
herhangi birinin yerine genişlik or ön hazırlık özellikleri değerlerinin alınmasına neden olur
argüman listesi printf or hızlı koşu(). Dinamik bir konum belirteci kullanmak için
genişlik veya hassasiyet, saymak$ sonra * biçim dizesinde. Örneğin,
"%3$*2$.*1$s".

Özel fileto İsimler
Herhangi birinden G/Ç yönlendirmesi yaparken baskı or printf bir dosyaya veya aracılığıyla hat almak Bir gelen
dosyası, ahmak belirli özel dosya adlarını dahili olarak tanır. Bu dosya adları erişime izin verir
devralınan dosya tanımlayıcılarını açmak için ahmak'nin ana süreci (genellikle kabuk). Bunlar
dosya adları, veri dosyalarını adlandırmak için komut satırında da kullanılabilir. Dosya adları şunlardır:

- Standart giriş.

/dev/stdin Standart giriş.

/dev/stdout Standart çıktı.

/dev/stderr Standart hata çıktısı.

/dev/fd/n Açık dosya tanımlayıcıyla ilişkili dosya n.

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

baskı "Sen esti o!" > "/dev/stderr"

aksi halde kullanmak zorunda kalırsınız

baskı "Sen esti o!" | "kedi 1>&2"

Aşağıdaki özel dosya adları, |& oluşturmak için ortak işlem operatörü
TCP/IP ağ bağlantıları:

/inet/tcp/ihracat/hayalet/rapor
/inet4/tcp/ihracat/hayalet/rapor
/inet6/tcp/ihracat/hayalet/rapor
Yerel bağlantı noktasında bir TCP/IP bağlantısı için dosyalar ihracat uzak ana bilgisayara hayalet uzaktan
Liman rapor. Bir bağlantı noktası kullanın 0 sistemin bir bağlantı noktası seçmesini sağlamak için. Kullanmak /inet4 zorlamak
bir IPv4 bağlantısı ve /inet6 IPv6 bağlantısını zorlamak için. Sade /inet kullanır
sistem varsayılanı (büyük olasılıkla IPv4).

/inet/udp/ihracat/hayalet/rapor
/inet4/udp/ihracat/hayalet/rapor
/inet6/udp/ihracat/hayalet/rapor
Benzer, ancak TCP/IP yerine UDP/IP kullanın.

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

atan2 (y, x) arktanjantını döndür y / x radyan cinsinden.

cos (İfade) kosinüsünü döndür İfade, ki radyan cinsindendir.

tecrübe(İfade) Üstel fonksiyon.

int(İfade) Tam sayıya kısaltın.

günlüğü (İfade) Doğal logaritma işlevi.

randevu() Rastgele bir sayı döndür N, 0 ile 1 arasında, öyle ki 0 ≤ N <1.

günah(İfade) sinüsünü döndür İfade, ki radyan cinsindendir.

kare(İfade) karekökünü döndür İfade.

küçük parça ([İfade]) kullanım İfade rastgele sayı üreteci için yeni tohum olarak. Eğer hayırsa İfade is
sağlanmışsa, günün saatini kullanın. Rastgele için önceki tohumu döndür
sayı üreteci.

dizi fonksiyonlar
gevezelik aşağıdaki yerleşik dize işlevlerine sahiptir:

çeşitli(s [, d [, Nasıl]]) Kaynak dizideki öğelerin sayısını döndür s. sırala
içeriği s kullanma ahmakdeğerleri karşılaştırmak için normal kurallar ve
sıralanmış değerlerin indekslerini değiştirin s sıralı
1 ile başlayan tamsayılar İsteğe bağlı hedef dizi ise d is
belirtilen, ilk kopya s içine dve ardından sırala d, bırakmak
kaynak dizinin indeksleri s değişmemiş. isteğe bağlı dize Nasıl
yönü ve karşılaştırma modunu kontrol eder. için geçerli değerler
Nasıl dizelerden herhangi biri için geçerli mi? PROCINFO["sıralanmış_in"]. O
kullanıcı tanımlı bir karşılaştırma fonksiyonunun adı da olabilir.
tarif edilmek PROCINFO["sıralanmış_in"].

çeşit çeşit(s [, d [, Nasıl]])
Kaynak dizideki öğelerin sayısını döndür s. Davranış
ile aynı asort (), bunun dışında dizi endeksleri vardır
dizi değerleri için değil, sıralama için kullanılır. Bittiğinde, dizi
sayısal olarak indekslenir ve değerler orijinalin değerleridir
endeksler. Orijinal değerler kaybolur; böylece bir saniye sağlar
orijinali korumak istiyorsanız dizi. Amacının
isteğe bağlı dize Nasıl açıklandığı gibi aynıdır asort () yukarıdaki.

nesil alt(r, s, h [, t]) Hedef diziyi ara t normal ifadenin eşleşmeleri için
r. Eğer h ile başlayan bir dizedir g or G, ardından tümünü değiştirin
maçları r ile s. Aksi takdirde, h olduğunu gösteren bir sayıdır
maçı r değiştirmek. Eğer t verilmez, kullanın $0 yerine.
Değiştirilen metin içinde s, sekans \n, Burada n bir rakam
1'den 9'a kadar, yalnızca eşleşen metni belirtmek için kullanılabilir
the nparantez içindeki alt ifade. Sekans \0 temsil
karakterin yaptığı gibi eşleşen metnin tamamı &. aksine alt()
ve gsub(), değiştirilen dize, sonucu olarak döndürülür.
işlev ve orijinal hedef dize değil değişti.

gsub(r, s [, t]) Normal ifadeyle eşleşen her alt dize için r dizede
t, dizeyi değiştir s, ve sayısını döndür
ikameler. Eğer t verilmez, kullanın $0. Bir & içinde
değiştirme metni, gerçekte olan metinle değiştirilir.
eşleşti. Kullanmak \& bir harf almak için &. (Bu, şu şekilde yazılmalıdır:
"\\&"; görmek Ne oldu? Etkili AWK Programlama daha dolu bir tartışma için
için kurallar &'s ve ters eğik çizgiler değiştirme metninde
alt(), gsub(), ve gensub().)

dizin (s, t) Dizenin dizinini döndür t dizede sveya 0 ise t değil
sunmak. (Bu, karakter indekslerinin birden başladığı anlamına gelir.)
için bir regexp sabiti kullanmak önemli bir hatadır t.

uzunluk ([s]) Dizenin uzunluğunu döndür sveya uzunluğu $0 if s değil
tedarik edildi. Bir dizi argümanıyla standart olmayan bir uzantı olarak,
uzunluk() dizideki eleman sayısını döndürür.

kibrit(s, r [, a]) içindeki pozisyonu döndür s normal ifade nerede r oluşur veya
0 ise r mevcut değil ve değerlerini ayarlayın BAŞLAT ve UZUNLUK.
Argüman sırasının aşağıdakiyle aynı olduğuna dikkat edin. ~ Şebeke:
str ~ re. eğer dizi a sağlanır, a temizlenir ve ardından öğeler
1 ile n bölümleri ile doldurulur s eşleşen
karşılık gelen parantez içindeki alt ifade r. 0'inci eleman
of a kısmını içerir s tüm düzenli tarafından eşleşti
ifade r. Abonelikler a[n, "Başlat"], ve a[n, "uzunluk"]
sırasıyla dize ve uzunluktaki başlangıç ​​dizinini sağlayın,
eşleşen her alt dizenin.

patsplit(s, a [, r [, Eylül]])
dizeyi böl s diziye a ve ayırıcılar dizisi Eylül
normal ifadede rve alan sayısını döndürür.
Eleman değerleri bölümleridir s eşleşen r. Değeri
eylül[i] önünde görünen ayırıcıdır a[i+ 1]. Eğer r
atlanmıştır, FPAT yerine kullanılır. diziler a ve Eylül vardır
önce temizlendi. Bölme, alan bölmeyle aynı şekilde davranır
ile FPAT, Yukarıda tarif edilen.

bölmek(s, a [, r [, Eylül]])
dizeyi böl s diziye a ve ayırıcılar dizisi Eylül
normal ifadede rve alan sayısını döndürür. Eğer
r atlanmıştır, FS yerine kullanılır. diziler a ve Eylül vardır
önce temizlendi. eylül[i] alan ayırıcı eşleşiyor mu r
arasında a[i] ve a[i+ 1]. Eğer r tek bir boşluktur, ardından önde
boşluk s ekstra dizi öğesine gider eylül[0] ve
sondaki boşluk, ekstra dizi öğesine gider eylül[n],
nerede n dönüş değeridir bölmek(s, a, r, Eylül). bölme
yukarıda açıklanan alan bölmeyle aynı şekilde davranır.

sprintf (fmt, expr listesi) Print expr listesi göre fmtve elde edilen dizeyi döndürün.

strtonum(str) Muayene etmek strve sayısal değerini döndürün. Eğer str ile başlar
önemli 0, sekizlik bir sayı olarak kabul edin. Eğer str ile başlar
önemli 0x or 0X, onaltılık bir sayı olarak ele alın. Aksi halde,
ondalık bir sayı olduğunu varsayalım.

alt(r, s [, t]) Tıpkı gsub(), ancak yalnızca eşleşen ilk alt dizeyi değiştirin.

alt dizi(s, i [, n]) en fazla iade et n-karakter alt dizesi s başlayarak i. Eğer n
atlanır, geri kalanını kullanın s.

daha düşük(str) Dizenin bir kopyasını döndür str, tüm büyük harflerle
in str karşılık gelen küçük harfli karşılıklarına çevrilmiştir.
Alfabetik olmayan karakterler değişmeden bırakılır.

topak(str) Dizenin bir kopyasını döndür str, tüm küçük harflerle
in str karşılık gelen büyük harfli karşılıklarına çevrilmiştir.
Alfabetik olmayan karakterler değişmeden bırakılır.

gevezelik multibyte farkındadır. Bunun anlamı şudur ki dizin (), uzunluk(), alt dizi () ve eşleşme() bütün iş
bayt cinsinden değil, karakter cinsinden.

Zaman fonksiyonlar
AWK programlarının birincil kullanımlarından biri, zaman içeren günlük dosyalarını işlemek olduğundan,
damga bilgileri, ahmak zaman damgalarını almak için aşağıdaki işlevleri sağlar ve
onları biçimlendirme.

mktime(tarih belirtimi)
kule tarih belirtimi tarafından döndürülen aynı formdaki bir zaman damgasına sistem zamanı(), ve
sonucu döndür. NS tarih belirtimi formun bir dizesidir YYYY MM DD HH MM SS[
Yaz Saati]. Dizenin içeriği, temsil eden altı veya yedi sayıdır.
sırasıyla yüzyıl dahil tam yıl, 1'den 12'ye kadar olan ay, gün
1'den 31'e kadar olan ay, 0'dan 23'e günün saati, 0'dan XNUMX'e kadar olan dakika
59, 0'dan 60'a saniye ve isteğe bağlı bir gün ışığından yararlanma bayrağı. Değerler
bu sayıların belirtilen aralıklarda olması gerekmez; örneğin, bir saat
-1, gece yarısından 1 saat önce anlamına gelir. Başlangıç-sıfır Gregoryen takvimi
0 yıldan önceki 1 yılı ve 1 yılından önceki -0 yılı ile varsayılır.
yerel saat diliminde olduğu varsayılır. Gün ışığından yararlanma bayrağı pozitifse,
saatin gün ışığından yararlanma saati olduğu varsayılır; sıfır ise, zaman varsayılır
standart zaman ol; ve negatifse (varsayılan), mktime() belirlemeye çalışır
gün ışığından yararlanma saatinin belirtilen saat için geçerli olup olmadığı. Eğer tarih belirtimi
yeterli öğe içermiyorsa veya ortaya çıkan süre aralık dışındaysa,
mktime() -1 değerini döndürür.

strftime([biçim [, zaman damgası[, utc bayrağı]]])
oluşturulan zaman damgası şartnamesine göre biçim. Eğer utc bayrağı is
mevcut ve sıfır değil veya boş değil, sonuç UTC'de, aksi halde sonuç
yerel saattedir. NS zaman damgası tarafından iade edilenle aynı biçimde olmalıdır
sistem zamanı(). Eğer zaman damgası eksikse, günün geçerli saati kullanılır. Eğer biçim
çıktısına eşdeğer bir varsayılan biçim eksik tarih(1) kullanılır. NS
varsayılan biçim şurada mevcuttur: PROCINFO["strftime"]. için spesifikasyona bakın
the strftime() garanti edilen format dönüşümleri için ISO C'de işlev
uygun olmak.

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

Bit Manipülasyonlar fonksiyonlar
gevezelik aşağıdaki bit işleme işlevlerini sağlar. Çift dönüştürerek çalışırlar.
hassas kayan nokta değerleri uintmax_t tamsayılar, işlemi yapmak ve sonra
sonucu tekrar kayan noktaya dönüştürmek. İşlevler şunlardır:

ve(v1, v2 [,...]) Bağımsız değişken listesinde sağlanan değerlerin bit düzeyinde VE'sini döndürün.
En az iki tane olmalı.

karmaşık(val) bit düzeyinde tamamlayıcısını döndür val.

l vardiya(val, saymak) Değerini döndür val, sola kaydırıldı saymak bit.

veya(v1, v2 [,...]) Bağımsız değişken listesinde sağlanan değerlerin bit düzeyinde VEYA'sını döndürün.
En az iki tane olmalı.

rkaydırma(val, saymak) Değerini döndür val, sağa kaydırıldı saymak bit.

xor(v1, v2 [,...]) Bağımsız değişken listesinde sağlanan değerlerin bit düzeyinde XOR'sini döndürün.
En az iki tane olmalı.

Tip işlev
Aşağıdaki işlev, çok boyutlu dizilerle kullanım içindir.

dizi(x)
Eğer true döndür x bir dizidir, aksi takdirde false olur.

Uluslararasılaşma fonksiyonlar
Aşağıdaki işlevler, dizeleri çevirmek için AWK programınızdan kullanılabilir
işlem esnasında. Tüm ayrıntılar için bkz. Ne oldu? Etkili AWK Programlama.

bindtextetki alanı(rehber [, domain])
bulunduğu dizini belirtin ahmak arar .gmo dosyaları, olmayacakları veya
"standart" konumlara yerleştirilemez (örneğin, test sırasında). geri döner
dizin nerede domain ``bağlıdır.''
Varsayılan domain değeri METİN ALANI. Eğer rehber boş dizedir
(""), sonra bağlama metnialanı() verilen için geçerli bağlamayı döndürür domain.

dcgettext(dizi [, domain [, kategori]])
çevirisini iade et dizi metin alanında domain yerel kategori için
kategori. için varsayılan değer domain şu anki değeri METİN ALANI.
için varsayılan değer kategori is "LC_MESAJLAR".
için bir değer sağlarsanız kategori, bilinenlerden birine eşit bir dize olmalıdır
açıklanan yerel kategoriler Ne oldu? Etkili AWK Programlama. Ayrıca gerekir
bir metin alanı sağlayın. Kullanmak METİN ALANI mevcut etki alanını kullanmak istiyorsanız.

dcngettext(string1, string2, numara [, domain [, kategori]])
için kullanılan çoğul formu döndür numara çevirisinin string1 ve string2 in
metin alanı domain yerel kategori için kategori. için varsayılan değer domain is
şu anki değeri METİN ALANI. için varsayılan değer kategori is "LC_MESAJLAR".
için bir değer sağlarsanız kategori, bilinenlerden birine eşit bir dize olmalıdır
açıklanan yerel kategoriler Ne oldu? Etkili AWK Programlama. Ayrıca gerekir
bir metin alanı sağlayın. Kullanmak METİN ALANI mevcut etki alanını kullanmak istiyorsanız.

KULLANICI TANIMLI FONKSİYONLAR


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

işlev isim(parametre liste) { ifadeleri }

İşlevler, desenlerdeki veya ifadelerdeki ifadelerden çağrıldıklarında yürütülür.
hareketler. İşlev çağrısında sağlanan gerçek parametreler,
fonksiyonda bildirilen resmi parametreler. Diziler referansa göre iletilir, diğer
değişkenler değere göre iletilir.

İşlevler başlangıçta AWK dilinin bir parçası olmadığından, yerel
değişkenler oldukça beceriksizdir: Parametre listesinde ekstra parametreler olarak bildirilirler.
Kural, yerel değişkenleri gerçek parametrelerden fazladan boşluklarla ayırmaktır.
parametre listesi. Örneğin:

işlev f(p, q, a, b) # a ve b vardır yerel
{
...
}

/ABC/ { ... ; f(1, 2) ; ... }

Bir işlev çağrısındaki sol parantez, işlevi hemen takip etmek için gereklidir.
ad, araya boşluk bırakmadan. Bu, sözdizimsel bir belirsizliği önler.
birleştirme operatörü Bu kısıtlama, listelenen yerleşik işlevler için geçerli değildir
yukarıdaki.

Fonksiyonlar birbirini çağırabilir ve özyinelemeli olabilir. Yerel olarak kullanılan fonksiyon parametreleri
değişkenler, işlev çağrıldığında boş dizeye ve sıfır sayısına başlatılır.

kullanım dönüş İfade bir fonksiyondan bir değer döndürmek için. Hayır ise dönüş değeri tanımsızdır
değer sağlanırsa veya işlev sonunda “düşerek” dönerse.

Olarak ahmak uzantı, işlevler dolaylı olarak çağrılabilir. Bunu yapmak için, adını atayın
dize olarak bir değişkene çağrılacak işlev. Sonra değişkeni sanki
ön eki olan bir işlevin adıydı @ işaret, şöyle:
işlev işlevim()
{
baskı "işlevim aranan"
...
}

{ ...
the_func = "fonksiyonum"
@the_func() # çağrı içinden the_func için işlevim
...
}
4.1.2 sürümünden itibaren bu, kullanıcı tanımlı işlevler, yerleşik işlevler ve
uzatma işlevleri.

If --tüysüz sağlanmıştır, ahmak ayrıştırma zamanında tanımsız işlevlere yapılan çağrılar hakkında uyarır,
çalışma zamanında yerine. Çalışma zamanında tanımsız bir işlevi çağırmak önemli bir hatadır.

Kelime func yerine kullanılabilir işlev, bu kullanımdan kaldırılmış olmasına rağmen.

DİNAMİK OLARAK YÜKLENİYOR YENİ FONKSİYONLAR


Çalışana dinamik olarak yeni yerleşik işlevler ekleyebilirsiniz. ahmak ile tercüman
@yük Beyan. Tüm ayrıntılar bu kılavuz sayfasının kapsamı dışındadır; görmek Ne oldu?
Etkili AWK Programlama.

SİNYALLER


The ahmak profil oluşturucu iki sinyali kabul eder. SIGUSR1 bir profil ve işlev atmasına neden olur
ya da olan profil dosyasına yığın çağrı awkprof.out, veya dosya adı ne olursa olsun
ile --profil seçenek. Daha sonra koşmaya devam eder. GÖRÜŞ nedenleri ahmak boşaltmak
profil ve işlev çağrısı yığını ve ardından çıkın.

ULUSLARARASILAMA


Dize sabitleri, çift tırnak içine alınmış karakter dizileridir. İngilizce olmayan
konuşma ortamlarında, AWK programındaki dizeleri gerekli olarak işaretlemek mümkündür.
yerel doğal dile çeviri. Bu tür diziler AWK programında şu şekilde işaretlenir:
önde gelen alt çizgi (“_”). Örneğin,

ahmak 'BAŞLAMAK { baskı "Merhaba, dünya " }'

her zaman yazdırır Merhaba, Dünya. Fakat,

ahmak 'BAŞLAMAK { baskı _"Merhaba, dünya " }'

yazdırabilir , bonjour monde Fransa'da.

Yerelleştirilebilir bir AWK programı üretmenin ve çalıştırmanın birkaç adımı vardır.

1. Bir BAŞLA değer atama işlemi METİN ALANI metin alanını ayarlamak için değişken
programınızla ilişkili bir isme:

BAŞLA { METİN ALANI = "programım" }

Bu izin verir ahmak bulmak için .gmo Programınızla ilişkili dosya. Bu olmadan
adım, ahmak kullanır mesajları muhtemelen çeviri içermeyen metin alanı
programınız için.

2. Çevrilmesi gereken tüm dizeleri baştaki alt çizgilerle işaretleyin.

3. Gerekirse, dcgettext() ve / veya bağlama metnialanı() programınızdaki işlevler,
uygun.

4. Çalıştırmak ahmak --gen-pot -f benim programım.awk > programım.pot üretmek için .tencere senin için dosya
programı.

5. Uygun çevirileri sağlayın ve ilgili çevirileri oluşturun ve kurun. .gmo dosyaları.

Uluslararasılaştırma özellikleri şurada tam olarak açıklanmaktadır: Ne oldu? Etkili AWK
Programlama.

POSIX UYUMLULUK


için birincil hedef ahmak POSIX standardı ile uyumluluğun yanı sıra
Brian Kernighan'ın son sürümü awk. Bu amaçla, ahmak aşağıdakileri içerir
AWK kitabında açıklanmayan, ancak Brian'ın bir parçası olan kullanıcı tarafından görülebilen özellikler
Kernighan'ın versiyonu awk, ve POSIX standardındadır.

Kitap, komut satırı değişken atamasının ne zaman gerçekleştiğini gösterir. awk Aksi halde olur
argümanı bir dosya olarak açın; BAŞLA kuralı yürütülür. Ancak, içinde
önceki uygulamalarda, böyle bir atama herhangi bir dosya adından önce göründüğünde,
atama olur önce the BAŞLA kural çalıştırıldı. Uygulamalar bağımlı hale geldi
bu özellik." Ne zaman awk belgelerine uyacak şekilde değiştirildi, -v seçeneği
uygulamaları barındırmak için program yürütmeden önce değişken atama
eski davranışa bağlıydı. (Bu özellik hem Bell tarafından kabul edildi
Laboratuvarlar ve GNU geliştiricileri.)

Argümanları işlerken, ahmak sona erdiğini belirtmek için özel “--” seçeneğini kullanır.
argümanlar. Uyumluluk modunda, hakkında uyarır, aksi takdirde tanımsız seçenekleri yok sayar.
Normal operasyonda, bu tür argümanlar işlemesi için AWK programına iletilir.

AWK kitabı, dönüş değerini tanımlamaz. parça(). POSIX standardına sahiptir
rasgele sayı dizilerinin izlenmesine izin vermek için kullandığı tohumu döndürün.
Bu nedenle parça() in ahmak ayrıca mevcut tohumunu da döndürür.

Diğer yeni özellikler şunlardır: Çoklu kullanım -f seçenekler (MKS'den awk); ÇEVRE dizi;
the \a, ve \v kaçış dizileri (başlangıçta ahmak ve Bell'e geri beslendi
Laboratuvar versiyonu); NS daha düşük() ve tokmak() yerleşik işlevler (Bell'den
Laboratuvar versiyonu); ve ISO C dönüştürme spesifikasyonları printf (ilk olarak yapılır
Bell Laboratuvarları versiyonu).

TARİHİ ÖZELLİKLER


Tarihsel AWK uygulamalarının bir özelliği vardır: ahmak destekler: Mümkün
aramak uzunluk() yerleşik işlev yalnızca argümansız değil, aynı zamanda
parantez! Böylece,

a = uzunluk # Kutsal Algol 60, Yarasa Adam!

ikisinden biri ile aynıdır

a = uzunluk()
a = uzunluk($0)

Bu özelliği kullanmak kötü bir uygulamadır ve ahmak durumunda kullanımı hakkında bir uyarı verir. --tüysüz is
komut satırında belirtilir.

GNU UZANTILAR


gevezelik POSIX için çok fazla sayıda uzantıya sahip awk. bunlarda anlatılıyor
Bölüm. Burada açıklanan tüm uzantılar çağrılarak devre dışı bırakılabilir. ahmak ile
--geleneksel or --posix seçenekleri.

Aşağıdaki özellikleri ahmak POSIX'te mevcut değil awk.

· aracılığıyla adlandırılan dosyalar için yol araması yapılmaz. -f seçenek. Bu yüzden AWKPATH
ortam değişkeni özel değildir.

· Dosya ekleme yapmak için bir tesis yoktur (ahmak's @Dahil etmek mekanizması).

· C ile yazılmış yeni fonksiyonları dinamik olarak ekleme imkanı yoktur (ahmak's @yük
mekanizması).

· \x kaçış dizisi. (ile devre dışı --posix.)

· Satırlardan sonra devam edebilme özelliği ? ve :. (ile devre dışı --posix.)

· AWK programlarında sekizlik ve onaltılık sabitler.

· ARGİND, BİN MODU, HATA, tiftik, RT ve METİN ALANI değişkenler özel değildir.

· YOKSAY değişken ve yan etkileri mevcut değildir.

· ALAN GENİŞLİKLERİ değişken ve sabit genişlikli alan ayırma.

· FPAT alan değerlerine göre değişken ve alan bölme.

· PROSİNFO dizi mevcut değil.

· Kullanımı RS düzenli bir ifade olarak.

· G/Ç yeniden yönlendirmesi için kullanılabilen özel dosya adları tanınmıyor.

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

· BAŞLANGIÇ ve SON DOSYA özel desenler mevcut değildir.

· Değeri olarak boş dize kullanarak tek tek karakterleri bölme yeteneği FS,
ve üçüncü argüman olarak Bölünmüş().

· İsteğe bağlı dördüncü bir argüman Bölünmüş() ayırıcı metinleri almak için.

· İsteğe bağlı ikinci argüman kapat() fonksiyonu.

· İsteğe bağlı üçüncü argüman eşleşme() fonksiyonu.

· Konum belirteçleri ile kullanma yeteneği printf ve hızlı koşu().

· Bir diziyi geçirme yeteneği uzunluk().

· ve(), asort (), çeşitli(), bağlama metnialanı(), karmaşık(), dcgettext(), dcngettext(),
gensub(), lshift(), mktime(), veya(), patsplit(), rshift(), strftime(), strtonum(),
sistem zamanı() ve xor() fonksiyonlar.

· Yerelleştirilebilir dizeler.

AWK kitabı, geri dönüş değerini tanımlamaz. kapat() fonksiyonu. gevezelik's kapat()
değerini döndürür kapat(3) veya kapatmak(3), bir çıktı dosyasını veya borusunu kapatırken,
sırasıyla. Bir giriş borusunu kapatırken sürecin çıkış durumunu döndürür. NS
adlandırılmış dosya, kanal veya ortak işlem bir ile açılmadıysa dönüş değeri -1'dir.
yeniden yönlendirme.

Ne zaman ahmak ile çağrılır --geleneksel seçeneği, eğer fs argüman -F seçenektir
"t", ardından FS sekme karakterine ayarlanır. şunu not edin ahmak -F\t ... basitçe neden olur
kabuk “t” yi alıntılar ve “\t” yi geçmez -F seçenek. Bu bir olduğundan
oldukça çirkin özel durum, varsayılan davranış değildir. Bu davranış aynı zamanda
meydana gelirse --posix belirtilmiştir. Alan olarak gerçekten bir sekme karakteri almak için
ayırıcı, tek tırnak kullanmak en iyisidir: ahmak -F'\t' ....

ÇEVRE DEĞİŞKENLER


The AWKPATH ortam değişkeni, dizinlerin bir listesini sağlamak için kullanılabilir. ahmak
aracılığıyla adlandırılmış dosyaları ararken arar. -f, --dosya, -i ve --Dahil etmek seçenekler. Eğer
ilk arama başarısız olur, eklemeden sonra yol tekrar aranır .awk dosya adına.

The AWKLIBPATH ortam değişkeni, dizinlerin bir listesini sağlamak için kullanılabilir. ahmak
aracılığıyla adlandırılmış dosyaları ararken arar. -l ve --yük seçenekleri.

The GAWK_READ_TIMEOUT ortam değişkeni, bir zaman aşımı belirtmek için kullanılabilir
bir terminal, boru veya iki yönlü iletişimden gelen girişi okumak için milisaniye
prizler.

Soket üzerinden uzak bir ana bilgisayara bağlantı için, GAWK_SOCK_RETRIES sayısını kontrol eder
yeniden deneme ve GAWK_MSEC_UYKU ve yeniden denemeler arasındaki aralık. Aralık
milisaniye. desteklemeyen sistemlerde uyu(3), değer bir değere yuvarlanır.
tam sayı saniye.

If POSIXLY_DOĞRU ortamda var, o zaman ahmak aynen öyle davranıyor --posix vardı
komut satırında belirtilmiştir. Eğer --tüysüz belirtilmiş, ahmak bir uyarı verir
bu etki için mesaj.

EXIT DURUMU


Eğer çıkış deyim bir değerle kullanılır, ardından ahmak verilen sayısal değerle çıkar
ona.

Aksi takdirde, yürütme sırasında herhangi bir sorun yoksa, ahmak C değeri ile çıkar
sabit ÇIKIŞ_BAŞARI. Bu genellikle sıfırdır.

Bir hata oluşursa, ahmak C sabitinin değeri ile çıkar EXIT_FAILURE. Bu,
genellikle bir.

If ahmak önemli bir hata nedeniyle çıkar, çıkış durumu 2'dir. POSIX olmayan sistemlerde bu
değer eşlenebilir EXIT_FAILURE.

VERSION Hizmetler


Bu adam sayfası belgeleri ahmak, Sürüm 4.1.

YAZARLAR


UNIX'in orijinal versiyonu awk Alfred Aho, Peter tarafından tasarlanmış ve uygulanmıştır.
Weinberger ve Bell Laboratuvarlarından Brian Kernighan. Brian Kernighan devam ediyor
sürdürmek ve geliştirmek.

Özgür Yazılım Vakfı'ndan Paul Rubin ve Jay Fenlason şunları yazdı: ahmak, uyumlu olmak
orijinal versiyonu ile awk Yedinci Baskı UNIX'te dağıtılır. John Woods
bir dizi hata düzeltmesine katkıda bulundu. Arnold Robbins'in katkılarıyla David Trueman,
yapılmış ahmak UNIX'in yeni sürümüyle uyumlu awk. Arnold Robbins şu anki
bakıcı.

Yerimizi Ne oldu? Etkili AWK Programlama katkıda bulunanların tam listesi için ahmak ve onun
dokümantasyon.

Bak README içindeki dosyayı ahmak bakımcılar hakkında güncel bilgiler için dağıtım
ve şu anda hangi bağlantı noktalarının desteklendiği.

HATA RAPORLAR


içinde bir bug bulursanız ahmak, lütfen elektronik posta gönderin [e-posta korumalı]. Lütfen
işletim sisteminizi ve revizyonunu, sürümünü ahmak (Gelen ahmak --versiyon),
derlemek için hangi C derleyicisini kullandınız ve bir test programı ve
problemin yeniden üretilmesi mümkündür.

Bir hata raporu göndermeden önce lütfen aşağıdakileri yapın. İlk önce, sahip olduğunuzu doğrulayın
son versiyonu ahmak. Her sürümde birçok hata (genellikle ince olanlar) düzeltilir,
ve sizinki güncel değilse, sorun zaten çözülmüş olabilir. İkincisi, lütfen bakın
ortam değişkenini ayarlarsanız LC_ALL için LC_ALL=C şeylerin senin gibi davranmasına neden olur
beklemek. Eğer öyleyse, bu bir yerel ayar sorunudur ve gerçekten bir hata olabilir veya olmayabilir. Son olarak, lütfen
Bu kılavuz sayfasını ve başvuru kılavuzunu dikkatlice okuyun ve düşündüğünüz şeyin bir
bug gerçekten, dilde bir tuhaflık yerine.

Ne yaparsan yap, yap DEĞİL içinde bir hata raporu yayınla comp.lang.awk. Iken ahmak geliştiriciler
ara sıra bu haber grubunu okuyun, hata raporları gönderin, rapor etmenin güvenilir olmayan bir yolu var
böcekler. Bunun yerine lütfen yukarıda verilen elektronik posta adreslerini kullanınız. Yok canım.

GNU/Linux veya BSD tabanlı bir sistem kullanıyorsanız, şu adrese bir hata raporu göndermek isteyebilirsiniz:
dağıtımınızın satıcısı. Sorun değil ama lütfen bir kopyasını yetkiliye gönderin.
hata raporunun iletileceğine dair bir garanti olmadığından, e-posta adresini de
the ahmak bakıcı.

onworks.net hizmetlerini kullanarak çevrimiçi gawk kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad