sed - pass match to external command

Ich habe ein kleines Skript mit sed geschrieben, um dies zu transformieren:

kaefert@Ultrablech ~ $ cat /sys/class/power_supply/BAT0/uevent
POWER_SUPPLY_NAME=BAT0
POWER_SUPPLY_STATUS=Full
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=7400000
POWER_SUPPLY_VOLTAGE_NOW=8370000
POWER_SUPPLY_POWER_NOW=0
POWER_SUPPLY_ENERGY_FULL_DESIGN=45640000
POWER_SUPPLY_ENERGY_FULL=44541000
POWER_SUPPLY_ENERGY_NOW=44541000
POWER_SUPPLY_MODEL_NAME=UX32-65
POWER_SUPPLY_MANUFACTURER=ASUSTeK
POWER_SUPPLY_SERIAL_NUMBER= 

in ein csv-Dateiformat wie dieses:

kaefert@Ultrablech ~ $ Documents/Asus\ Zenbook\ UX32VD/power_to_csv.sh 
"date";"status";"voltage µV";"power µW";"energy full µWh";"energy now µWh"
2012-07-30 11:29:01;"Full";8369000;0;44541000;44541000 
2012-07-30 11:29:02;"Full";8369000;0;44541000;44541000 
2012-07-30 11:29:04;"Full";8369000;0;44541000;44541000
... (in a loop)

Ich möchte jetzt jede dieser Zahlen durch 1.000.000 dividieren, damit sie nicht µV, sondern V und W anstelle von µW darstellen, damit sie auf einen Blick leicht interpretiert werden können. Natürlich könnte ich das manuell nachträglich machen, wenn ich diese CSV in Libre Office Calc geöffnet habe, aber ich würde sie gerne automatisieren.

Was ich gefunden habe ist, dass ich zwischen sed externe Programme aufrufen kann, wie folgt:

...
s/\nPOWER_SUPPLY_PRESENT=1\nPOWER_SUPPLY_TECHNOLOGY=Li-ion\nPOWER_SUPPLY_CYCLE_COUNT=0\nPOWER_SUPPLY_VOLTAGE_MIN_DESIGN=7400000\nPOWER_SUPPLY_VOLTAGE_NOW=\([0-9]\{1,\}\)/";'`echo 0`'\1/

und dass ich durch so etwas Werte bekommen könnte, wie ich will:

echo "scale=6;3094030/1000000" | bc | sed 's/0\{1,\}$//'

Das Problem ist nun, wie kann ich meine Übereinstimmung "\ 1" an den externen Befehl übergeben?

Wenn Sie sich das vollständige Skript ansehen möchten, finden Sie es dort:http://koega.no-ip.org/mediawiki/index.php/Battery_info_to_csv

Antworten auf die Frage(3)

Ihre Antwort auf die Frage