AWK - Yerleşik Değişkenler
AWK, birkaç yerleşik değişken sağlar. AWK komut dosyalarını yazarken önemli bir rol oynarlar. Bu bölüm yerleşik değişkenlerin kullanımını gösterir.
Standart AWK değişkenleri
Standart AWK değişkenleri aşağıda tartışılmaktadır.
ARGC
Komut satırında sağlanan argüman sayısını ifade eder.
Example
[jerry]$ awk 'BEGIN {print "Arguments =", ARGC}' One Two Three Four
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Arguments = 5
Ama sadece 4 bağımsız değişken geçtiğinizde AWK neden 5 gösteriyor? Şüphenizi gidermek için aşağıdaki örneği kontrol edin.
ARGV
Komut satırı argümanlarını depolayan bir dizidir. Dizinin geçerli dizini 0 ile ARGC-1 arasındadır.
Example
[jerry]$ awk 'BEGIN {
for (i = 0; i < ARGC - 1; ++i) {
printf "ARGV[%d] = %s\n", i, ARGV[i]
}
}' one two three four
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
ARGV[0] = awk
ARGV[1] = one
ARGV[2] = two
ARGV[3] = three
CONVFMT
Sayılar için dönüştürme biçimini temsil eder. Varsayılan değeri%.6g.
Example
[jerry]$ awk 'BEGIN { print "Conversion Format =", CONVFMT }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Conversion Format = %.6g
ÇEVRE
İlişkili bir ortam değişkenleri dizisidir.
Example
[jerry]$ awk 'BEGIN { print ENVIRON["USER"] }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
jerry
Diğer ortam değişkenlerinin adlarını bulmak için şunu kullanın: env komut.
DOSYA ADI
Mevcut dosya adını temsil eder.
Example
[jerry]$ awk 'END {print FILENAME}' marks.txt
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
marks.txt
Lütfen FILENAME'in BEGIN bloğunda tanımsız olduğunu unutmayın.
FS
(Giriş) alan ayırıcısını temsil eder ve varsayılan değeri boşluktur. Bunu kullanarak da değiştirebilirsiniz-F komut satırı seçeneği.
Example
[jerry]$ awk 'BEGIN {print "FS = " FS}' | cat -vte
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
FS = $
NF
Geçerli kayıttaki alanların sayısını temsil eder. Örneğin, aşağıdaki örnek yalnızca ikiden fazla alan içeren satırları yazdırır.
Example
[jerry]$ echo -e "One Two\nOne Two Three\nOne Two Three Four" | awk 'NF > 2'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
One Two Three
One Two Three Four
NR
Mevcut kaydın numarasını temsil eder. Örneğin, aşağıdaki örnek, geçerli kayıt numarası üçten azsa kaydı yazdırır.
Example
[jerry]$ echo -e "One Two\nOne Two Three\nOne Two Three Four" | awk 'NR < 3'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
One Two
One Two Three
FNR
NR'ye benzer, ancak mevcut dosyaya göre. AWK birden fazla dosya üzerinde çalışırken kullanışlıdır. FNR değeri yeni dosyayla sıfırlanır.
OFMT
Çıktı formatı numarasını temsil eder ve varsayılan değeri %.6g.
Example
[jerry]$ awk 'BEGIN {print "OFMT = " OFMT}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
OFMT = %.6g
OFS
Çıktı alanı ayırıcısını temsil eder ve varsayılan değeri boşluktur.
Example
[jerry]$ awk 'BEGIN {print "OFS = " OFS}' | cat -vte
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
OFS = $
ORS
Çıktı kaydı ayırıcısını temsil eder ve varsayılan değeri yeni satırdır.
Example
[jerry]$ awk 'BEGIN {print "ORS = " ORS}' | cat -vte
Yukarıdaki kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Output
ORS = $
$
UZUNLUK
Eşleşen dizenin uzunluğunu temsil eder. matchişlevi. AWK'nin eşleştirme işlevi, girdi dizesinde belirli bir dizeyi arar.
Example
[jerry]$ awk 'BEGIN { if (match("One Two Three", "re")) { print RLENGTH } }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
2
RS
(Giriş) kayıt ayırıcısını temsil eder ve varsayılan değeri yeni satırdır.
Example
[jerry]$ awk 'BEGIN {print "RS = " RS}' | cat -vte
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
RS = $
$
YENİDEN BAŞLAT
İle eşleşen dizedeki ilk konumu temsil eder match işlevi.
Example
[jerry]$ awk 'BEGIN { if (match("One Two Three", "Thre")) { print RSTART } }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
9
SUBSEP
Dizi alt dizeleri için ayırıcı karakteri temsil eder ve varsayılan değeri \034.
Example
[jerry]$ awk 'BEGIN { print "SUBSEP = " SUBSEP }' | cat -vte
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
SUBSEP = ^\$
0 $
Tüm girdi kaydını temsil eder.
Example
[jerry]$ awk '{print $0}' marks.txt
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
$ n
Alanların FS ile ayrıldığı geçerli kayıttaki n'inci alanı temsil eder .
Example
[jerry]$ awk '{print $3 "\t" $4}' marks.txt
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Physics 80
Maths 90
Biology 87
English 85
History 89
GNU AWK'ya Özgü Değişkenler
GNU AWK'ya özgü değişkenler aşağıdaki gibidir -
ARGIND
İşlenmekte olan mevcut dosyanın ARGV'deki dizinini temsil eder.
Example
[jerry]$ awk '{
print "ARGIND = ", ARGIND; print "Filename = ", ARGV[ARGIND]
}' junk1 junk2 junk3
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
ARGIND = 1
Filename = junk1
ARGIND = 2
Filename = junk2
ARGIND = 3
Filename = junk3
BINMODE
POSIX olmayan sistemlerdeki tüm dosya G / Ç'leri için ikili modu belirtmek için kullanılır. 1, 2 veya 3 sayısal değerleri, sırasıyla giriş dosyalarının, çıktı dosyalarının veya tüm dosyaların ikili G / Ç kullanması gerektiğini belirtir. Dize değerlerir veya wsırasıyla girdi dosyalarının veya çıktı dosyalarının ikili G / Ç kullanması gerektiğini belirtin. Dize değerlerirw veya wr tüm dosyaların ikili G / Ç kullanması gerektiğini belirtin.
HATA
Bir dize, bir yeniden yönlendirme başarısız olduğunda bir hatayı gösterir. getline ya da eğer close arama başarısız.
Example
[jerry]$ awk 'BEGIN { ret = getline < "junk.txt"; if (ret == -1) print "Error:", ERRNO }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Error: No such file or directory
ALAN GENİŞLİKLERİ
Alan genişlikleri değişkeninin boşlukla ayrılmış bir listesi ayarlanır, GAWK, FS değişkeninin değerini alan ayırıcı olarak kullanmak yerine girişi sabit genişlikte alanlara ayrıştırır.
IGNORECASE
Bu değişken ayarlandığında, GAWK büyük / küçük harfe duyarsız hale gelir. Aşağıdaki örnek bunu göstermektedir -
Example
[jerry]$ awk 'BEGIN{IGNORECASE = 1} /amit/' marks.txt
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
1) Amit Physics 80
LINT
Dinamik kontrol sağlar. --lintGAWK programından seçenek. Bu değişken ayarlandığında, GAWK tüy bırakma uyarıları yazdırır. Ölümcül dize değeri atandığında, tüy bırakmayan uyarılar, tıpkı--lint=fatal.
Example
[jerry]$ awk 'BEGIN {LINT = 1; a}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
awk: cmd. line:1: warning: reference to uninitialized variable `a'
awk: cmd. line:1: warning: statement has no effect
PROCINFO
Bu, gerçek ve etkili UID numaraları, işlem kimlik numarası vb. Gibi işlemle ilgili bilgileri içeren ilişkilendirilebilir bir dizidir.
Example
[jerry]$ awk 'BEGIN { print PROCINFO["pid"] }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
4316
TEXTDOMAIN
AWK programının metin alanını temsil eder. Programın dizgilerinin yerelleştirilmiş çevirilerini bulmak için kullanılır.
Example
[jerry]$ awk 'BEGIN { print TEXTDOMAIN }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
messages
Yukarıdaki çıktı, nedeniyle İngilizce metni gösterir. en_IN yerel ayar