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