AWK - Temel Sözdizimi
AWK'nın kullanımı kolaydır. AWK komutlarını doğrudan komut satırından veya AWK komutlarını içeren bir metin dosyası biçiminde sağlayabiliriz.
AWK Komut Satırı
Gösterildiği gibi komut satırında tek tırnak içinde bir AWK komutu belirleyebiliriz -
awk [options] file ...
Misal
Bir metin dosyası düşünün marks.txt aşağıdaki içerikle -
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
AWK kullanarak dosyanın tüm içeriğini aşağıdaki gibi görüntüleyelim -
Example
[jerry]$ awk '{print}' 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
AWK Program Dosyası
AWK komutlarını gösterildiği gibi bir komut dosyasında sağlayabiliriz -
awk [options] -f file ....
İlk önce bir metin dosyası oluşturun command.awk aşağıda gösterildiği gibi AWK komutunu içeren -
{print}
Artık AWK'ya metin dosyasından komutları okumasını ve eylemi gerçekleştirmesini söyleyebiliriz. Burada, yukarıdaki örnekte gösterilenle aynı sonucu elde ediyoruz.
Example
[jerry]$ awk -f command.awk 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
AWK Standart Seçenekleri
AWK, komut satırından sağlanabilen aşağıdaki standart seçenekleri destekler.
-V seçeneği
Bu seçenek, bir değişkene bir değer atar. Programın yürütülmesinden önce atamaya izin verir. Aşağıdaki örnek -v seçeneğinin kullanımını açıklamaktadır.
Example
[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Name = Jerry
--Dump-değişkenler [= dosya] seçeneği
Global değişkenlerin sıralı bir listesini ve bunların son değerlerini dosyaya yazdırır. Varsayılan dosyaawkvars.out.
Example
[jerry]$ awk --dump-variables ''
[jerry]$ cat awkvars.out
Yukarıdaki kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Output
ARGC: 1
ARGIND: 0
ARGV: array, 1 elements
BINMODE: 0
CONVFMT: "%.6g"
ERRNO: ""
FIELDWIDTHS: ""
FILENAME: ""
FNR: 0
FPAT: "[^[:space:]]+"
FS: " "
IGNORECASE: 0
LINT: 0
NF: 0
NR: 0
OFMT: "%.6g"
OFS: " "
ORS: "\n"
RLENGTH: 0
RS: "\n"
RSTART: 0
RT: ""
SUBSEP: "\034"
TEXTDOMAIN: "messages"
--Help seçeneği
Bu seçenek, yardım mesajını standart çıktıya yazdırır.
Example
[jerry]$ awk --help
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options : GNU long options: (standard)
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
Short options : GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-L [fatal] --lint[=fatal]
-n --non-decimal-data
-N --use-lc-numeric
-O --optimize
-p[file] --profile[=file]
-P --posix
-r --re-interval
-S --sandbox
-t --lint-old
-V --version
--Lint [= ölümcül] seçeneği
Bu seçenek, taşınabilir olmayan veya şüpheli yapıların kontrol edilmesini sağlar. Bir tartışma olduğundafatalsağlanırsa, uyarı mesajlarını hata olarak değerlendirir. Aşağıdaki örnek bunu göstermektedir -
Example
[jerry]$ awk --lint '' /bin/ls
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
awk: cmd. line:1: warning: empty program text on command line
awk: cmd. line:1: warning: source file does not end in newline
awk: warning: no program text at all!
--Posix seçeneği
Bu seçenek, tüm yaygın ve gawk'a özgü uzantıların devre dışı bırakıldığı katı POSIX uyumluluğunu etkinleştirir.
--Profile [= dosya] seçeneği
Bu seçenek, programın güzel basılmış bir sürümünü dosyada oluşturur. Varsayılan dosyaawkprof.out. Aşağıdaki basit örnek bunu göstermektedir -
Example
[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print}
END{printf"---|Footer|---\n"}' marks.txt > /dev/null
[jerry]$ cat awkprof.out
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
# gawk profile, created Sun Oct 26 19:50:48 2014
# BEGIN block(s)
BEGIN {
printf "---|Header|--\n"
}
# Rule(s) {
print $0
}
# END block(s)
END {
printf "---|Footer|---\n"
}
Geleneksel seçenek
Bu seçenek, gawk'a özgü tüm uzantıları devre dışı bırakır.
--Version seçeneği
Bu seçenek, AWK programının sürüm bilgisini görüntüler.
Example
[jerry]$ awk --version
Bu kod çalıştırıldığında, aşağıdaki sonucu verir -
Output
GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.