Direi che devi fare una funzione che faccia il parsing tipo:
-8<--
#!/bin/bash
# parsefile outvar sezione chiave
function parsefile {
local -n result=$1
while read A; do
if [[ "$A" == "$2" ]]; then
# Trovata la sezione, cerca la entry
while read L; do
if [[ "$L" =~ .+:.+ ]]; then
# L è nel formato key:value
IFS=":" read K V <<<"$L"
# Rimuove gli spazi
V=$(echo $V| xargs)
if [[ "$K" == "$2" ]]; then
result=$V
return 0
fi
else
# Errore: fine sezione/file
return 1
fi
done
fi
done
}
val=""
parsefile val acpitz-acpi-0 temp1 < testfile.txt
echo "$val"
-8<--
(questo ritorna come valore tutto il campo, poi puoi farne un ulteriore
parsing come ti serve)
Diego
Il 04/11/2024 09:51, Leonardo Boselli ha scritto:
On Mon, 4 Nov 2024, Piviul wrote:
dovrebbe funzionare: $(<tuo comando> | cut -f2 -d: | egrep -o
'^([0-9]*[.]*[0-9]*)');
...sempre che abbia capito bene
no, non hai capito tutta la domanda: quella parte era la parte semplice.
quello che mi serve è dare un comando
$(<mio comando>) | filtrodipiviul "record" "campo"
per intendersi, usando come comando sensors , che tutti hanno e possono
provare, e che fornisce i dati proprio in quel formato (ogni macchina li da
differentemente quindi adattate l'esempio se ho l'output
…
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +33.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +32.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +31.0°C (high = +100.0°C, crit = +100.0°C)
dell_smm-isa-0000
Adapter: ISA adapter
Processor Fan: 2716 RPM (min = 0 RPM, max = 4900 RPM)
CPU: +33.0°C
Ambient: +27.0°C
SODIMM: +27.0°C
acpitz-acpi-0
Adapter: ACPI interface
temp1: +25.0°C (crit = +107.0°C)
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1: +33.0°C
…
allora
filtrodipiviul acpitz-acpi-0 temp1
dovrebbe restituirmi "+25.0" (o anche 25)
e
filtrodipiviul dell_smm-isa-0000 "Processor Fan"
dovrebbe restituirmi "2716"
sono stato più chiaro ?
--
Leonardo Boselli
Firenze, Toscana, Europa
http://i.trail.it
--
Diego Zuccato
DIFA - Dip. di Fisica e Astronomia
Servizi Informatici
Alma Mater Studiorum - Università di Bologna
V.le Berti-Pichat 6/2 - 40127 Bologna - Italy
tel.: +39 051 20 95786