12/06/2019

awk güzellemeler 2

Doktor bu ne yaa

cat ZZZZZZZ | awk '$1 ~ /:$/ {ve=$1} $1 ~ /numproc/ && $3 > 2000 {print ve " " $2 " " $3}'

Daha bi fırın ekmek yemem lazım

 ls -lap|awk '{print $5}'|awk '{ if (last == $1) {sum+=$1; ttl+=$1} else {print last " " sum; sum=$1; last=$1; ttl+=$1} } END {print ttl}'

0
4096 8192
9878 9878
18 18
220 220
190 190
4096 4096
100 100
2265 2265
4096 4096
32 32
28456 28456
4096 8192
1024 1024
2094 2094
4096 8192
129 129
4096 4096
47136 47136
1711 1711
134213

Şimdi bakalım şair ne demiş 🙂

Önce şu kompleks if-else yapısını biraz daha basitleştirelim.

 ls -lap|awk '{print $5}'|awk '{ if (last == $1) {print last " esit"} else {print last "esit degil"} } END {print "bitti"}'
 esit
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
esit degil
bitti

last en sondan bir önce okunan değerdir. Neden $1 ile eşit oldu onu anladım. Çünkü –awk ‘{print $5}’ — dan sonra gelen ilk satır boş yani NULL e last da atanmamıştı o da null dolayısı ile eşit.

Böylece if ve elsi ve END i gördük.

Leave a Reply