Portál AbcLinuxu, 10. května 2025 04:55

Dotaz: Awk vypsání hodnot z lm_sensors

13.2.2009 18:12 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Awk vypsání hodnot z lm_sensors
Přečteno: 210×
Odpovědět | Admin
Pomocí příkazu sensors |grep temp získám tento výstup s teplotou systému:
temp1:       +33°C  (high =    +0°C, hyst =    +4°C)   sensor = thermistor   ALARM   
temp2:     +18.5°C  (high =  +120°C, hyst =  +115°C)   sensor = diode           
temp3:     +63.0°C  (high =  +120°C, hyst =  +115°C)   sensor = thermistor           
a potřeboval bych jenom první dva sloupce, aby to vypadalo nějak takto:
temp1:       +33°C 
temp2:     +18.5°C  
temp3:     +63.0°C 

Tuším, žed by to mohlo jít pomocí AWK, ale v tom programu se nevyznám. Nevíte někdo jak to udělat?

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.2.2009 18:20 petr
Rozbalit Rozbalit vše Re: Awk vypsání hodnot z lm_sensors
Odpovědět | | Sbalit | Link | Blokovat | Admin
sensors |grep temp|awk '{ print $1,$2 }'

Možná by šel awk použít i místo toho grepu.
13.2.2009 19:17 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Awk vypsání hodnot z lm_sensors
Ne možná, ale určite:
sensors | awk '/^temp/{printf("%s\t%6s\n",$1,$2);}'
Pokud jde pouze o to si vyzobnout kus, stejně dobře poslouží i sed (ten regexp lze napsat na mnoho způsobu, ale tohle by snad mělo být bezpečné s jinými lokály/jednotkami):
sensors | sed -ne 's#\(^temp[^ 	]*:[ 	]*[^ 	]*\).*$#\1#p'
13.2.2009 19:33 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Awk vypsání hodnot z lm_sensors
On by vlastně stačil i bash:
sensors | while read label val1 rest ; do [ "${label:0:4}" = "temp" ] && echo $label $val1 ; done
nebo
sensors | while read label val1 rest ; do [ "${label#temp}" != "${label}" ] && echo $label $val1 ; done
Když už člověk vymýšlí blbosti... on vlastně stačí i Bourne Shell:
sensors | while read label val1 rest ; do case $label in temp*)   echo $label $val1 ; ;; esac ; done
No jo, no, krása U*Xového světa. mnoho cest ke stejnému cíli.
petka avatar 13.2.2009 20:38 petka | skóre: 25 | blog: heydax | Klasterec N/O
Rozbalit Rozbalit vše Re: Awk vypsání hodnot z lm_sensors

Ja nevim proc tolik argunentu staci i tohle

sensors | awk '/temp/{print($1,$2);}'

Ubuntu server - Asus E35M1​-M ​- AMD Hudson M1 , 2x Technisat Skystar2 , 2x 1GB Lan , WiFi mod AP ,vdr,mysql,apache2...
13.2.2009 21:46 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Awk vypsání hodnot z lm_sensors
Protože jsem se nakolik to šlo snažil vyhovět zadáni, kde bylo zachované zarovnání zprava :)
temp1:       +33°C
temp2:     +18.5°C
temp3:     +63.0°C
Tedy potud awk a sed. V Shellech už jsem to pravda neřešil, protože by to nabylo více.

/temp/ vám trefí libovolné temp kdekoliv na řádku. Regexp je lépe psát tak, aby byl co nejspecifičtější, jinak se občas dějí věci.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.