Portál AbcLinuxu, 10. května 2025 04:55
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 = thermistora 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?
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'
sensors | while read label val1 rest ; do [ "${label:0:4}" = "temp" ] && echo $label $val1 ; donenebo
sensors | while read label val1 rest ; do [ "${label#temp}" != "${label}" ] && echo $label $val1 ; doneKdyž 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 ; doneNo jo, no, krása U*Xového světa. mnoho cest ke stejnému cíli.
Ja nevim proc tolik argunentu staci i tohle
sensors | awk '/temp/{print($1,$2);}'
temp1: +33°C temp2: +18.5°C temp3: +63.0°CTedy 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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.