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.