PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen im awk



monarch
17.06.2005, 15:31
Hi Leute,

wiedermal ein awk-Problemchen. Inspiriert von dem Laptop-Powersafe-Thread hab ich mir folgendes Scriptchen gebastelt, das mir die CPU-Auslastung ausrechnet und den momentanen Governor ausliest.

Jetzt hätte ich die beiden Sachen gerne auf einer Zeile, ich will das $GOV im awk mit reinnehmen.



vmstat 1 | while read line;
do
GOV=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor`


echo $line| awk '{print "CPU-Last: " $13 + $14 " # " }' ;
echo $GOV;
done



Die Ausgabe ist so:


CPU-Last: 0 #
powersave
CPU-Last: 0 #
powersave
CPU-Last: 12 #
powersave
CPU-Last: 2 #


und ich hätte es gerne so:




CPU-Last: 0 # powersave
CPU-Last: 0 # powersave
CPU-Last: 12 # powersave
CPU-Last: 2 # performance




Ich hätt gern irgendwas in der Art echo $line| awk '{print "CPU-Last: " $13 + $14 " # " $GOV}' ; aber das geht so nicht.

Irgendwelche Ideen? Muss auch nicht unbedingt awk sein.

Schlaubi_fi.de
17.06.2005, 20:55
Hi,

wie wärs mit:


vmstat 1 | while read line;
do
GOV=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor`


echo $line| awk '{printf "CPU-Last: " $13 + $14 " # " }' ;
echo $GOV;
done

oder:


vmstat 1 | while read line;
do
GOV=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor`


echo -n $line| awk '{print "CPU-Last: " $13 + $14 " # " }' ;
echo $GOV;
done


???

monarch
18.06.2005, 10:07
"echo -n" packts nicht. Hatt ich auch schon versucht.
Aber die erste Lösung ist super!!

Danke :))

Schlaubi_fi.de
18.06.2005, 17:14
:think:

Ahhh na klar , weil der awk noch dazwischen ist, stimmt :D

tr0nix
19.06.2005, 15:38
Ansonsten wenn du Umgebungsvariablen in AWK reinholen willst, gibts ne spezielle AWK-Array welche das erlaubt (ENVIRONMENT oder so aehnlich -> man).

TenBaseT
19.06.2005, 22:52
vmstat 1 | while read line;
do
GOV=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor`


echo -n $line| awk '{print "CPU-Last: " $13 + $14 " # " EVOIRON[GOV] }' ;
echo $GOV;
doneGeht nicht? Statt print würde ich printf verwenden
awk '{printf "CPU-Last: %s # %s" $13 + $14 EVOIRON[GOV] }' ;

Hans