awk 'md. line:1: (FILENAME=- FNR=1) fatal' sorunu

Başlatan zeusmaster, 20 Şubat 2013 - 18:07:03

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

zeusmaster

iostat ile bilgi almaya çalıştığımda aldığım hata. Acaba neden olabilir ?

┌─[bahdem]──[linux-a4yn]:~$
└──>>iostat -t 1 16|tail -n 15| awk '{n++;user+=$(NF-3);sys+=$(NF-2);idle+=$(NF-1);iowait+=$(NF)} END{print "user:"user/n " sys:"sys/n " idle:"idle/n " iowait:"iowait/n}' > /tmp/iostat.html
awk: cmd. line:1: (FILENAME=- FNR=1) fatal: attempt to access field -3
Up and Running...

cagriemer

bahdem iostat'tan hangi bilgiyi cekmek istiyorsun? NF-3 vb sekilde aritmetik islem mi yaptiriyorsun? Bunun yerine dogrudan sutun numarasini versen olmaz mi?

cagriemer

#2
Yapmak istedigini dogru anladim mi bilmiyorum ama Ubuntu icin soyle bir ornek yazdim.

iostat -c 3 10 | awk '/avg-cpu/ {count++; getline; user+=$1; sys+=$3; idle+=$6; iowait+=$4} END {print "user:"user/count" sys:"sys/count" idle:"idle/count" iowait:"iowait/count}'

count degiskeni 'avg-cpu' obeginin kac kere goruldugu degerini tutuyor. Yani iostat'i 3 saniye araliklarla 10 kere calistirdiginda bu ornek ciktida 10 adet avg-cpu olacak. getline  avg-cpu eslesmesinden bir sonraki satiri veriyor ki bu da iostat ciktisinda cpu istatistiklerini gosteriyor. cpu istatistiklerinde user 1 numarali sys 3 numarali idle 6 numarali iowait de 4 numarali sutunlarda bulunuyor dolayisiyla bu 10 degeri her sutun icin topluyoruz. En son kisimda da elimizde kac eslesme oldugunu biliyorduk count degiskeni ile toplamlari da biliyoruz dolayisiyla ekrana ortalamalari bastiriyoruz. Ortalama buldurmak icin NR kullanamadik cunku aslinda iostat'in ciktisi farkli seyleri de iceriyor.

Umarim dogru anlamasimdir.