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

Dotaz: ziskani casti textu do promene v bashi

1.7.2008 09:48 Kamil
ziskani casti textu do promene v bashi
Přečteno: 282×
Odpovědět | Admin
Dobry den. Pomoci prikazu sensors ziskavam tento textovy vystup.
Case Fan:    0 RPM  (min = 1318 RPM, div = 128)
CPU Fan:  3183 RPM  (min = 1704 RPM, div = 8)
fan3:        0 RPM  (min = 3515 RPM, div = 128)
fan5:        0 RPM  (min =    0 RPM, div = 8)
Sys Temp:    +35°C  (high =   +45°C, hyst =   +40°C)
CPU Temp:  +38.0°C  (high = +45.0°C, hyst = +40.0°C)
temp3:     +37.5°C  (high = +80.0°C, hyst = +75.0°C)
chtel bych vycucnout ty teploty jako samostatna cisla do promenych. Treba promena systemp,cputemp,temp3.A ty nasledne mohu pouziti do grafu. pripadne vypsani pres echo "$systemp" atd..

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

Odpovědi

1.7.2008 10:15 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
Odpovědět | | Sbalit | Link | Blokovat | Admin
vstup="Case Fan:    0 RPM  (min = 1318 RPM, div = 128)
CPU Fan:  3183 RPM  (min = 1704 RPM, div = 8)
fan3:        0 RPM  (min = 3515 RPM, div = 128)
fan5:        0 RPM  (min =    0 RPM, div = 8)
Sys Temp:    +35°C  (high =   +45°C, hyst =   +40°C)
CPU Temp:  +38.0°C  (high = +45.0°C, hyst = +40.0°C)
temp3:     +37.5°C  (high = +80.0°C, hyst = +75.0°C)"


systemp=`echo "$vstup" | gawk -F '+' 'NR==6 { print $2 }' | sed 's/\°C.*//'`
echo "$systemp
1.7.2008 10:28 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
pokud není pořadí řádek fixní, tak takto:
temp3=`echo "$vstup" | grep 'temp3' | gawk -F '+' '{ print $2 }' | sed 's/\°C.*//'`
1.7.2008 10:55 Kamil
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
Tohleto funguje ale jeste mensi problemek s promenou $vstup.

Script by mel pracovat tak ze po zadani prikazu sensors mi vypise tri cisla ktera budou ve trech ruznych promenych. Tedy asi nejak tak ze vystup prikazu sensors se preda asi pomoci roury dal aby vzniky ty tri promene a pomoci echo je vypsat.
1.7.2008 11:16 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
Dalo by se to třeba elegantně uložit do pole:
$ temps=( $(sensors | awk -F'  +' '/Sys Temp|CPU Temp|temp3/ { gsub(/[^0-9.]/, "", $2); print $2 }') )
$ echo ${temps[@]}
35 38.0 37.5
$ echo ${temps[0]}
35
$ echo ${temps[1]}
38.0
$ echo ${temps[2]}
37.5
1.7.2008 11:32 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
a nebo si ty proměnné vypsat za sebou: echo "$var1 $var2" ...
1.7.2008 10:57 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
awk to zvládne všechno najednou:
temp3=$(sensors | awk '/temp3/ { gsub(/[^0-9.]/, "", $2); print $2 }')
1.7.2008 11:19 Kamil
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
Pro promenou temp3 funguje.Pro CPU temp a Sys Temp kdyz tyto retesce znaku a patricne promene na zacatku doplnim misto temp3 do awk tak nevypise nic.Problem asi je ze v awk nestaci zmeni hledany retezec tedy misto temp3 doplnit CPU Temp a Sys Temp.
1.7.2008 11:36 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
To je tím, že jsou tam mezery. Buď se dá použít můj návrh s polem, nebo to upravit ad-hoc takto:
systemp=$(sensors | awk '/Sys Temp/ { gsub(/[^0-9.]/, "", $3); print $3 }')
cputemp=$(sensors | awk '/CPU Temp/ { gsub(/[^0-9.]/, "", $3); print $3 }')
temp3=$(sensors | awk '/temp3/ { gsub(/[^0-9.]/, "", $2); print $2 }')
1.7.2008 11:36 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: ziskani casti textu do promene v bashi
díky za parádní vylepšení, o gsub jsem do teď neměl ani tucha :-)

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.