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 awkplan9 komutudur.
Program:
ADI
awk - desene yönelik tarama ve işleme dili
SİNOPSİS
awk [ -Ffs ] [ -v var=değer ] [ -Bayn ] [ -mfn ] [ -f disiplin görevlisi [ disiplin görevlisi ] [ dosya Kendi ID’n ile mağazalarını oluştur ]
TANIM
awk her girişi tarar dosya belirtilen bir dizi desenden herhangi biriyle eşleşen çizgiler için
kelimenin tam anlamıyla disiplin görevlisi veya olarak belirtilen bir veya daha fazla dosyada -f dosya. Oradaki her desenle
bir satırda gerçekleştirilecek ilişkili bir eylem olabilir. dosya eşleştirir
Desen. Her satır, her kalıp eyleminin kalıp kısmıyla eşleştirilir
Beyan; ilişkili eylem, eşleşen her model için gerçekleştirilir. dosya adı
standart girdi anlamına gelir. Herhangi dosya şeklinde var=değer bir görev olarak kabul edilir, değil
bir dosya adıdır ve bir dosya adı olsaydı açılacağı anda yürütülür.
Seçenek -v ardından var=değer önce yapılması gereken bir görevdir disiplin görevlisi Idam edildi;
herhangi bir sayıda -v seçenekler mevcut olabilir. -F fs seçenek, giriş alanı ayırıcısını tanımlar
normal ifade olmak fs.
Bir giriş satırı normalde beyaz boşlukla veya normal boşlukla ayrılmış alanlardan oluşur.
ifade FS. alanlar belirtilir $1, $2, ..., süre $0 tüm satırı ifade eder.
If FS null, giriş satırı karakter başına bir alana bölünür.
Depolama yönetiminin yetersiz uygulanmasını telafi etmek için, -Bay seçenek olabilir
giriş kaydının maksimum boyutunu ayarlamak için kullanılır ve -mf maksimumu ayarlama seçeneği
alan sayısı.
Bir model-eylem ifadesi şu şekildedir:
model { aksiyon }
Özlemek { aksiyon } satırı yazdırmak anlamına gelir; eksik bir desen her zaman eşleşir. Desen-
eylem ifadeleri yeni satırlar veya noktalı virgüllerle ayrılır.
Eylem, bir dizi ifadedir. Bir ifade aşağıdakilerden biri olabilir:
Eğer( ifade ) ifade [ Başka ifade ]
süre ( ifade ) ifade
için( ifade ; ifade ; ifade ) ifade
için( var in dizi ) ifade
do ifade süre ( ifade )
kırılma
devam etmek
{ [ ifade Kendi ID’n ile mağazalarını oluştur ] }
ifade # yaygın var = ifade
Yazdır [ ifade listesi ] [ > ifade ]
printf biçim [ , ifade listesi ] [ > ifade ]
dönüş [ ifade ]
sonraki # bu giriş satırında kalan kalıpları atla
nextfile # bu dosyanın geri kalanını atla, sonrakini aç, en baştan başla
silmek dizi[ ifade ]# bir dizi öğesini sil
silmek dizi # dizinin tüm elemanlarını sil
çıkış [ ifade ] # hemen çık; durum ifade
İfadeler noktalı virgül, yeni satırlar veya sağ parantezler ile sonlandırılır. Boş ifade-
liste için standlar $0. Dize sabitleri, bilinen C çıkışları ile " " alıntılanır
içinde. İfadeler uygun şekilde dize veya sayısal değerler alır ve bunlar kullanılarak oluşturulur.
operatörler + - * / % ^ (üs alma) ve birleştirme (boşlukla gösterilir).
Operatörler ! ++ -- += -= *= /= %= ^= > >= < <= == != ?: şurada da mevcuttur
ifade. Değişkenler skaler olabilir, dizi elemanları (belirtilen x[i]) veya alanlar.
Değişkenler boş dizeye başlatılır. Dizi abonelikleri herhangi bir dize olabilir, değil
mutlaka sayısal; bu, bir tür çağrışımsal hafızaya izin verir. Birden çok abonelik
gibi [i,j,k] izin verilmiş; bileşenler birleştirilir, değere göre ayrılır
of ALT BÖLÜM.
The baskı deyimi, argümanlarını standart çıktıya (veya bir dosyaya) yazdırır. >dosya or
>>dosya varsa veya bir boru üzerinde |cmd mevcut), mevcut çıkış alanıyla ayrılmış
ayırıcı ve çıkış kaydı ayırıcısı tarafından sonlandırılır. dosya ve cmd gerçek olabilir
isimler veya parantez içindeki ifadeler; farklı ifadelerdeki aynı dize değerleri
aynı açık dosya. NS printf ifade, ifade listesini şuna göre biçimlendirir:
biçimi (bkz. fprintf(2)). Yerleşik işlev kapat(İfade) dosyayı veya boruyu kapatır İfade.
Yerleşik işlev flush(İfade) dosya veya boru için arabelleğe alınmış çıktıları temizler İfade.
matematiksel fonksiyonlar exp, log, sqrt, günah, araba, ve atan2 yerleşiktir. Diğer yerleşik-
fonksiyonlarda:
uzunluk bir dize olarak alınan argümanının uzunluğu veya $0 argüman yoksa.
tüm (0,1) üzerindeki rastgele sayı
Srand için tohum ayarlar tüm ve önceki tohumu döndürür.
int bir tamsayı değerine kısaltır
utf bir karakter numarası olan sayısal argümanını bir UTF dizgisine dönüştürür
alt dizi(s, m, n)
the n-karakter alt dizesi s pozisyonda başlayan m 1'den sayılır.
dizin (s, t)
içindeki pozisyon s dize nerede t oluşur, yoksa 0.
kibrit(s, r)
içindeki pozisyon s normal ifade nerede r oluşur, yoksa 0. NS
değişkenler BAŞLAT ve UZUNLUK eşleşenin konumuna ve uzunluğuna ayarlanır
dize.
bölmek(s, a, fs)
dizeyi böler s dizi öğelerine a[1], a[2], ..., a[n], ve döner n.
ayırma normal ifade ile yapılır fs veya alan ayırıcı ile FS if
fs verilmez. Alan ayırıcı olarak boş bir dize, dizeyi bire böler
karakter başına dizi öğesi.
alt(r, t, s)
yerine t normal ifadenin ilk oluşumu için r dizede s.
If s verilmez, $0 kullanıldı.
gsub gibi aynı alt normal ifadenin tüm oluşumlarının değiştirilmesi dışında; alt
ve gsub değiştirme sayısını döndürür.
sprintf (fmt, İfade, ...)
biçimlendirmeden kaynaklanan dize İfade Kendi ID’n ile mağazalarını oluştur göre printf biçim fmt
sistem (cmd)
infaz cmd ve çıkış durumunu döndürür
daha düşük(str)
bir kopyasını döndürür str tüm büyük harfli karakterler kendilerine çevrilmiş olarak
karşılık gelen küçük harf eşdeğerleri.
topak(str)
bir kopyasını döndürür str tüm küçük harfli karakterler kendilerine çevrilmiş olarak
karşılık gelen büyük harf eşdeğerleri.
``işlev'' hat almak setleri $0 mevcut girdi dosyasından bir sonraki girdi kaydına;
hat almak <dosya setleri $0 bir sonraki kayda dosya. hat almak x değişken ayarlar x yerine.
En sonunda, cmd | hat almak çıkış boruları cmd içine hat almak; her arama hat almak İade
sonraki çıktı satırı cmd. Her durumda, hat almak başarılı bir giriş için 1 döndürür,
Dosya sonu için 0 ve bir hata için -1.
Desenler keyfi Boole kombinasyonlarıdır (ile ! || &&) düzenli ifadeler ve
ilişkisel ifadeler. Normal ifadeler aşağıdaki gibidir regexp(6). İzole düzenli
bir desendeki ifadeler tüm satıra uygulanır. Düzenli ifadeler de oluşabilir
operatörleri kullanarak ilişkisel ifadeler ~ ve !~. /re/ sabit bir düzenli
ifade; dışında herhangi bir dize (sabit veya değişken) normal ifade olarak kullanılabilir.
bir desende yalıtılmış bir düzenli ifade konumunda.
Bir kalıp, virgülle ayrılmış iki kalıptan oluşabilir; bu durumda eylem
bir oluşumu olsa da, ilk desenin bir oluşumundan itibaren tüm çizgiler için gerçekleştirilir.
ikinci.
İlişkisel bir ifade aşağıdakilerden biridir:
ifade kibrit çöpü Düzenli ifade
ifade tekrarlamak ifade
ifade in dizi adı
(İfade,ifade,...) in dizi adı
burada bir tekrarlamak C'deki altı ilişkisel operatörden herhangi biri ve kibrit çöpü ya ~
(maçlar) veya !~ (eşleşmiyor). Koşul, aritmetik bir ifadedir, ilişkisel bir ifadedir.
ifadesi veya bunların bir Boole kombinasyonu.
özel desenler BAŞLA ve END ilk girişten önce kontrolü yakalamak için kullanılabilir
satır okunur ve sondan sonra. BAŞLA ve END başka desenlerle birleştirmeyin.
Özel anlamlara sahip değişken isimleri:
CONVFMT
sayıları dönüştürürken kullanılan dönüştürme biçimi (varsayılan %.6g)
FS alanları ayırmak için kullanılan normal ifade; ayrıca seçeneğe göre ayarlanabilir -Ffs.
NF geçerli kayıttaki alan sayısı
NR mevcut kaydın sıra numarası
FNR geçerli dosyadaki geçerli kaydın sıra numarası
DOSYA ADI
geçerli girdi dosyasının adı
RS giriş kayıt ayırıcı (varsayılan yeni satır)
OFS çıktı alanı ayırıcı (varsayılan boş)
ORS çıktı kaydı ayırıcı (varsayılan yeni satır)
OFMT sayılar için çıktı biçimi (varsayılan %.6g)
ALT BÖLÜM birden çok aboneyi ayırır (varsayılan 034)
ARGC argüman sayısı, atanabilir
ARGV bağımsız değişken dizisi, atanabilir; boş olmayan üyeler dosya adı olarak alınır
ÇEVRE
ortam değişkenleri dizisi; indisler isimlerdir.
Fonksiyonlar (bir model-eylem ifadesi konumunda) şu şekilde tanımlanabilir:
fonksiyon foo(a, b, c) { ...; x'i döndür }
Parametreler skaler ise değere göre, dizi adına göre ise referansa göre iletilir; fonksiyonlar olabilir
yinelemeli olarak çağrılır. Parametreler, işlev için yereldir; diğer tüm değişkenler globaldir.
Böylece fonksiyonda fazla parametreler sağlanarak yerel değişkenler oluşturulabilir.
tanım.
ÖRNEKLER
uzunluk($0) > 72
72 karakterden uzun satırları yazdırın.
{ 2 $, 1 $ yazdır }
İlk iki alanı ters sırada yazdırın.
BAŞLA { FS = ",[ \t]*|[ \t]+" }
{ 2 $, 1 $ yazdır }
Aynı, virgül ve/veya boşluklar ve sekmelerle ayrılmış giriş alanları ile.
{s += $1 }
END { print "toplam", s, " ortalama is", s/NR }
İlk sütunu ekleyin, toplamı ve ortalamayı yazdırın.
/başla dur/
Başlat/durdur çiftleri arasındaki tüm satırları yazdırın.
BAŞLA { # Simüle et kaçırmak(1)
için (i = 1; i < ARGC; i++) printf "%s ", ARGV[i]
printf "\ n"
çıkış }
KAYNAK
/sys/src/cmd/awk
awkplan9'u onworks.net hizmetlerini kullanarak çevrimiçi kullanın