Hat funktioniert, danke an alle. Für's Protokoll: habe ein Script zum Erstellen des Files und ein zweites Script zum Parsen gebastelt, was alles tut wie ich möchte
create.sh #!/bin/bash srcfile=suu-compare compfile=component.lst version=version filename=files.lst dstfile=result.lst grep "component:" $srcfile | cut -b 12- | sed -e 's/ //g' > $compfile grep "current version:" $srcfile | awk '{print $3"|"$7}' > $version grep "Package name:" $srcfile | awk '{print $3}' > $filename paste -d| $compfile $version $filename > $dstfile
compare.sh #!/bin/bash compfile=result.lst while read file; do cm=$(echo $file | cut -d | -f1) cv=$(echo $file | cut -d| -f2) rv=$(echo $file | cut -d| -f3) echo "Komponente "$cm echo "Current Version "$cv echo "Repository Version "$rv if [ $cv = $rv ]; then echo "OK" else echo "needs Update" fi done < $compfile
Am 28. Februar 2014 10:49 schrieb Thomas Müller thomas@mueller-meissen.de:
Hallo Christian und Frank,
danke für die Anregungen, ich probiers mal. "paste" hatte ich nicht auf dem Radar bzw. kannte es gar nicht :-)
Am 28. Februar 2014 09:46 schrieb Frank Hasterok < frank.hasterok.lug-dd@clfh.de>:
Hallo,
hier ist mein Vorschlag:
#!/bin/bash grep "component:" test280214.txt >ausgabedatei280214.txt grep "current version:" test280214.txt | paste ausgabedatei280214.txt -
ausgabedatei280214.txt
sed -i '1,2d' ausgabedatei280214.txt sed -i 's/ (repository version:)/\t\1/' ausgabedatei280214.txt grep "Package name:" test280214.txt | paste ausgabedatei280214.txt -
ausgabedatei280214.txt
sed -i '1,2d' ausgabedatei280214.txt
Vielleicht geht es noch einfacher. Ich bin kein Scripting Experte.
Viele Grüße Frank
Am Donnerstag, den 27.02.2014, 21:01 +0100 schrieb Thomas Müller:
Hallo an die Scripting Experten unter Euch,
wie kann ich elegant bzw. überhaupt folgende Aufgabe lösen: Gegeben ist eine Datei mit folgendem Inhalt (Auszug) < component: NetXtreme BCM5719 Gigabit Ethernet PCIe rev 01 (eth7) component type: Firmware current version: 7.8.16 = repository version: 7.8.16 Package name: Network_Firmware_T3TVN_LN_7.8.16.BIN Applicability: Package cannot be applied
component: iDRAC7 component type: Firmware current version: 1.51.51 > repository version: 1.46.45 Package name: ESM_Firmware_JYX4C_LN32_1.46.45_A00.BIN Applicability: Package can be applied
In der Ausgabe sollen die Werte für component, current version, repository version und Package name pro Komponente in jeweils einer Zeile erscheinen. Diese sollen im Idealfall Felder darstellen, die mit awk erfasst werden können ($1, $n). Hintergrund: Es soll ein Soll-Ist Vergleich der installierten Firmware eines DELL Servers mit einem Firmware Repository durchgeführt werden mit der Angabe: Komponente A braucht ein Update auf Version x, Komponente B ist aktuell.
Habe schon diverse awk und sed Konstrukte probiert, leider ohne durchschlagenden Erfolg da sich meine Kenntnisse der genannten Tools arg in Grenzen hält ;-(
Wie könnte man das machen?
Gruß Thomas
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
-- Freundliche Grüße
Thomas Müller Systemingenieur (IT) Hainstrasse 6 01662 Meißen eMail: thomas@mueller-meissen.de tmueller@itm-meissen.de http://www.mueller-meissen.de