Aritmetik
$ cat file2.txt
Ahmet 90 70 80
Elif 80 90 60
Deniz 100 70 90
Mesela toplama
$ awk '{print $2+$3+$4}' file2.txt
240
230
260
Ancak değişkende tanımlayabiliriz.
$ awk '{sum=$2+$3+$4 ;print "Sum is:",sum}' file2.txt
Sum is: 240
Sum is: 230
Sum is: 260
Text in rakamsal değeri 0 dır.
Increment (artım) operatörü
Mesela paswd dosyasina bakalim
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Bazilarinda “nologin” var. bunlardan kac tane var ?
$ awk 'BEGIN {count=0} /nologin/ {count++} END {print count}' /etc/passwd
22
IF-ELSE
Yeni bir dosya bir CSV dosyası, kişilerin adı,yaşı ve kilosu var.
$ cat file3.txt
Mahmut,4,12
Ayse,19,65
Deniz,12,50
Bulut,21,70
Cemil,3,6
Cemile,3,7
Şimdi bunu script olarak işleyelim.
$ cat awk.out
BEGIN {
FS=","
Cocuk=0
Bebek=0
Yetiskin=0
}
{
if ($2 < 5)
{
Bebek++
}
if ($2>5 && $2<18)
{
Cocuk++
}
if ($2>18)
{
Yetiskin++
}
}
END {
print "Bebeklerin sayisi :" , Bebek
print "Cocularin sayisi :" , Cocuk
print "Yetiskinlerin sayisi :" , Yetiskin
}
Ve çalıştıralım
$ awk -f awk.out file3.txt
Bebeklerin sayisi : 4
Cocularin sayisi : 1
Yetiskinlerin sayisi : 2
while da benzeri yapıda çalışmaktadır.
while (i < NF)
{
code.....
i++
}
Functions
Scripte değişiklik yapalım
$ cat awk.out
function yazdir()
{
printf "Function calisti!! \n"
}
BEGIN {
FS=","
Cocuk=0
Bebek=0
Yetiskin=0
}
{
if ($2 < 5)
{
Bebek++
yazdir()
}
if ($2>5 && $2<18)
{
Cocuk++
yazdir()
}
if ($2>18)
{
Yetiskin++
yazdir()
}
}
END {
print "Bebeklerin sayisi :" , Bebek
print "Cocularin sayisi :" , Cocuk
print "Yetiskinlerin sayisi :" , Yetiskin
}
Function i ekledik.
çalışınca
$ awk -f awk.out file3.txt
Function calisti!!
Function calisti!!
Function calisti!!
Function calisti!!
Function calisti!!
Function calisti!!
Function calisti!!
Bebeklerin sayisi : 4
Cocularin sayisi : 1
Yetiskinlerin sayisi : 2