İngilizceFransızcaİspanyolca

OnWorks favicon'u

runawk - 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 runawk ç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 runawk komutudur.

Program:

ADI


runawk - AWK yorumlayıcısı için sarmalayıcı

SİNOPSİS


kaçak [seçenekler] program dosyası

kaçak -e program

MOTİVASYON


AWK'yı programlama için yıllarca kullandıktan sonra, basitliğine ve
sınırlamalar AWK, çok çeşitli farklı görevler için komut dosyası yazmak için yeterince iyidir. AWK değil
Perl, Ruby, TCL ve diğerleri gibi daha büyük meslektaşları kadar güçlü ama
neredeyse tüm UNIX benzeri cihazlarda kompaktlık, basitlik ve kullanılabilirlik gibi kendi avantajları
sistemler. Ben de kişisel olarak veriye dayalı yapısını ve belirteç yönelimini seviyorum, çok kullanışlı
metin işleme yardımcı programları için teknikler.

Ne yazık ki awk tercümanları bazı önemli özelliklerden yoksundur ve bazen
yapabildikleri kadar iyi.

Gördüğüm sorunlar (bazıları elbette)

1.
AWK, modüller için destekten yoksundur. Küçük programlar oluştursam bile, genellikle kullanmak istiyorum
daha önce oluşturulan ve diğer komut dosyalarında zaten kullanılan işlevler. Yani, harika olurdu
işlevleri sözde kitaplıklar (modüller) halinde düzenleyin.

2.
Argümanları "#!/usr/bin/awk -f" betiği (tercüman awk değil),
- (iki eksi işareti) içeren bir argüman listesinin başına eklemek için gereklidir. Bana göre bu
kötü görünüyor. Ayrıca bu tür davranışlar POSIX/SUS "Yardımcı Program Sözdizimi Yönergeleri"ni de ihlal eder.

Örnek:

awk_programı:

#!/usr/bin/awk -f

BAŞLA {
(i=1; i < ARGC; ++i){ için
printf "ARGV [%d]=%s\n", i, ARGV [i]
}
}

Kabuk oturumu:

% awk_program --opt1 --opt2
/usr/bin/awk: bilinmeyen seçenek --opt1 yoksayıldı

/usr/bin/awk: bilinmeyen seçenek --opt2 yoksayıldı

% awk_program -- --opt1 --opt2
ARGV [1]=--opt1
ARGV [2]=--opt2
%

Benim fikrimce awk_programı komut dosyası böyle çalışmalı

% awk_program --opt1 --opt2
ARGV [1]=--opt1
ARGV [2]=--opt2
%

3.
Ne zaman "#!/usr/bin/awk -f" betiği argümanları (seçenekler) işler ve şuradan okumak ister:
stdin için, /dev/stdin (veya `-') son argüman olarak açıkça eklenmelidir.

Örnek:

awk_programı:

#!/usr/bin/awk -f

BAŞLA {
if (ARGV [1] == "--flag"){
bayrak = 1
ARGV [1] = "" # "--flag" adlı dosyayı okumamak için
}
}

{
print "flag=" flag " $0=" $0
}

Kabuk oturumu:

% yankı testi | awk_program -- --bayrak
% yankı testi | awk_program -- --flag /dev/stdin
bayrak=1 $0=test
%

ideal olarak awk_programı böyle çalışmalı

% yankı testi | awk_program --bayrak
bayrak=1 $0=test
%

4.
ıvır zıvır(1) GNU awk ile gönderilen Shebang'da kullanılamaz. Çoğunda (tümü?)
ile başlayan UNIX betikleri

#!/usr/yerel/bin/igawk -f

çalışmayacak.

kaçak tüm bu sorunları çözmek için yaratıldı

SEÇENEKLER


-d Bir hata ayıklama modunu açın.

-e program
Programı belirtin. Eğer -e belirtilmemişse, AWK kodu şuradan okunur program dosyası.

-f awk_module
etkinleştirmek awk_module. Bu aynı şekilde çalışır

#"awk_module.awk" kullan

koddaki yönerge. çoklu -f seçeneklere izin verilir.

-F fs Giriş alanı ayırıcısını FS normal ifadeye ayarlayın fs.

-h Yardım bilgilerini görüntüleyin.

-t Bu seçenek uygulanırsa, tarafından geçici bir dizin oluşturulur. kaçak ve ona giden yol
geçildi awk çocuk süreci. Geçici dizin altında oluşturulur
${RUNAWK_TMPDIR} (ayarlanmışsa) veya ${TMPDIR} (ayarlanmışsa) veya / Tmp rehber
aksi takdirde. Eğer #kullanmak "tmpfile.awk" bir programda algılanırsa bu seçenek etkinleştirilir
otomatik olarak.

-T FS'yi SEKME karakterine ayarlayın. Bu eşdeğerdir -F'\t'

-V Sürüm bilgilerini görüntüleyin.

-v var=val
değeri ata val değişkene var programın yürütülmesi başlamadan önce.

DETAYLAR/DAHİLİ


Bağımsız senaryo
UNIX benzeri işletim sistemleri altında kullanabilirsiniz kaçak betiğinize başlayarak

#!/usr/yerel/bin/runawk

bunun yerine çizgi veya bunun gibi bir şey

#!/usr/bin/awk -f

veya benzeri.

AWK modüller
Modülleri etkinleştirmek için bunları aşağıdaki gibi awk betiğine eklemelisiniz.

#"module1.awk" kullan
#"module2.awk" kullan

modül adını belirten satır, normal AWK tarafından bir yorum satırı olarak kabul edilir.
tercüman ama tarafından işlenir kaçak özellikle.

sen koşmadıkça kaçak seçeneği ile -e, #kullanmak boşluk içermeyen 0 sütunuyla başlamalıdır veya
sekmeler simgelerine ondan önce izin verilir ve aralarında hiçbir simgeye izin verilmez # ve kullanım.

Ayrıca AWK modüllerinin başka modülleri ve benzerlerini "kullanabileceğini" unutmayın. hepsi
derinlik-birinci sırada toplanır ve her biri awk yorumlayıcı listesine eklenir
-f seçeneği ile hazırlanan argümanlar. Yani #kullanmak yönergesi *NOT* ile benzerdir #Dahil etmek
C programlama dilinde, runawk'ın modül kodu yerine yerleştirilmez. #kullanmak.
Runawk'ın modülleri Perl'in "use" komutuna daha yakındır. Bazı modüllerden bahsedilmesi durumunda
birden fazla, bunun için yalnızca bir -f eklenecek, yani yinelemeler kaldırılacak
otomatik olarak.

Pozisyonu #kullanmak kaynak dosyadaki yönerge önemli, yani önceki modül
belirtildiğinde, bunun için önceki -f üretilecektir.

Örnek:

dosya programı:
#!/usr/yerel/bin/runawk

#"A.awk" kullan
#"B.awk" kullan
#"E.awk" kullan

PROG kodu
Kendi ID’n ile mağazalarını oluştur

dosya B.awk:
#"A.awk" kullan
#"C.awk" kullan
B kodu
Kendi ID’n ile mağazalarını oluştur

dosya C.awk:
#"A.awk" kullan
#"D.awk" kullan

C kodu
Kendi ID’n ile mağazalarını oluştur

A.awk ve D.awk #use yönergesini içermez

Eğer koşarsan

runawk prog dosyası1 dosyası2

or

/path/to/prog dosyası1 dosya2

aşağıdaki komut

awk -f A.awk -f D.awk -f C.awk -f B.awk -f E.awk -f prog -- dosya1 dosya2

aslında koşacak.

Bunu çalıştırarak kontrol edebilirsiniz

runawk -d prog dosyası1 dosya2

modül arama strateji
Modüller ilk önce ana programın (veya #kullanımının bulunduğu modülün) bulunduğu bir dizinde aranır.
yönergesi belirtilir) yerleştirilir. Orada bulunamazsa, AWKPATH ortamı
değişken kontrol edilir. AWKPATH, arama dizinlerinin iki nokta üst üste ayrılmış bir listesini tutar. Nihayet,
modül sistem runawk modülleri dizininde aranır, varsayılan olarak PREFIX/share/runawk ancak
bu derleme zamanında değiştirilebilir.

Modülün mutlak yolu da belirtilebilir.

Programı as an tartışma
Diğer bazı tercümanlar gibi kaçak komut dosyasını bunun gibi bir komut satırından alabilir

/yol/to/runawk -e '
#"alt_assert.awk" kullan

{
assert($1 >= 0 && $1 <= 10, "Hatalı değer: " $1)

# kodunuz aşağıda
Kendi ID’n ile mağazalarını oluştur
}'

kaçak oneliner yazmak için de kullanılabilir

runawk -f abs.awk -e 'BEGIN {baskı abs(-1)}'

Seçilmesi a tercihli AWK çevirmen
Nedense bir AWK tercümanını veya diğerini tercih edebilirsiniz. nedeni olabilir
belirli bir görev için verimlilik, kullanışlı ancak standart uzantılar veya başka bir şey değil. NS
söylemek kaçak hangi AWK yorumlayıcısının kullanılacağı, biri kullanılabilir #interp Direktifler

dosya programı:
#!/usr/yerel/bin/runawk

#"A.awk" kullan
#"B.awk" kullan

#interp "/usr/pkg/bin/nbawk"

# kodunuz burada
Kendi ID’n ile mağazalarını oluştur

Bunu not et #interp yönerge ayrıca 0 sütunuyla başlamalıdır, öncesinde boşluk bırakılamaz
o ve arasında # ve yorum.

Bazen kullanıcılara tercih ettikleri AWK'yı seçme olanağı vermek de mantıklıdır.
kaynak kodunu değiştirmeden yorumlayıcı. İçinde kaçak özel kullanarak mümkündür
Direktifler #interp-var kullanıcı tarafından atanabilir bir ortam değişkeni adı ayarlar
bir AWK yorumlayıcısını belirtir. Örneğin, aşağıdaki komut dosyası

dosya alt çubuğu:
#!/usr/bin/ortam kaçak

#interp-var "FOOBAR_AWK"

BAŞLA {
print "Bu bir FooBar uygulamasıdır"
}

olarak çalıştırılabilir

env FOOBAR_AWK=mawk foobar

ya da sadece

filanca

önceki durumda gevezelik AWK yorumlayıcısı olarak kullanılacaktır, ikincisinde -- varsayılan AWK
tercüman.

kullanma mevcut modüller bir tek
UNIX dünyasında, konfigürasyon dosyalarını bir programlama dilinde yazmak yaygın bir uygulamadır.
uygulamanın Yani, uygulama Bourne kabuğunda yazılmışsa, yapılandırma
bu tür uygulamalar için dosyalar genellikle Bourne'da da yazılır. RunAWK kullanarak yapabilirsiniz
AWK'da yazılan uygulamalar için aynıdır. Örneğin, aşağıdaki kod kullanılacak
~/.foobarrc dosya varsa, aksi takdirde /etc/foobar.conf varsa kullanılacaktır.

dosya alt çubuğu:
#!/usr/bin/ortam kaçak

#güvenli kullanım"~/.foobarrc" "/etc/foobar.conf"

BAŞLA {
foo, bar, baz yazdır
}

dosya ~/.foobarrc:
BAŞLA {
foo = "foo10"
çubuk = "bar20"
baz = 123
}

Tabii ki, #güvenli kullanım direktif başka amaçlar için de kullanılabilir. #güvenli kullanım
yönerge istediğiniz kadar modül kabul eder, ancak en fazla bir tanesi awk kullanılarak dahil edilebilir.
-f seçeneği, diğerleri sessizce yok sayılır, ayrıca modüllerin soldan sola analiz edildiğini unutmayın.
sağ. Modül adındaki baştaki yaklaşık işareti, kullanıcının ana dizini ile değiştirilir. Bir diğeri
örnek:

dosya alt çubuğu:
#!/usr/bin/ortam kaçak

#kullan "/usr/share/foobar/default.conf"
#güvenli kullanım"~/.foobarrc" "/etc/foobar.conf"

kodunuz burada

Burada varsayılan ayarlar /usr/share/foobar/default.conf dosyasında belirlenir ve yapılandırma
dosyalar (varsa) bunları geçersiz kılmak için kullanılır.

ayar çevre
Bazı durumlarda AWK yorumlayıcısını belirli bir ortamla çalıştırmak isteyebilirsiniz. İçin
örneğin, komut dosyanız yalnızca ASCII metnini işlemeye yönelik olabilir. Bu durumda çalıştırabilirsiniz
LC_CTYPE=C ortamı ile AWK ve normal ifade aralıklarını kullanın.

kaçak sağlar #ortam Bunun için direktif. Çift tırnak içindeki dize iletilir
Putenv(3) libc işlevi.

Örnek:

dosya programı:
#!/usr/yerel/bin/runawk

#env "LC_ALL=C"

$1 ~ /^[AZ]+$/ { # AZ, LC_CTYPE=C ise geçerlidir
1 $ yazdır
}

EXIT DURUMU


AWK yorumlayıcısı normal olarak çıkarsa, kaçak çıkış durumu ile çıkar. AWK tercümanı ise
sinyalle öldürüldü, kaçak çıkış durumu 128+sinyal ile çıkar.

ÇEVRE


AWKPATH
İki nokta üst üste ayrılmış dizin listesi awk modüller aranır.

RUNAWK_AWKPROG
Varsayılan olarak kullanılan AWK yorumlayıcısının yolunu ayarlar, yani bu değişken geçersiz kılar
derleme zamanı varsayılanı. #interp yönergesinin bunu geçersiz kıldığını unutmayın.

RUNAWK_KEEPTPMP
Ayarlanırsa, geçici dosyalar silinmez.

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


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad