Hallo Thomas,
ich habe noch einen zweiten Vorschlag.
Es geht auch nur mit sed und in einer Zeile. Wer sich richtig mit sed auskennt, könnte den zweiten Vorschlag bestimmt noch vereinfachen:
sed -n '{/component:/p; /current version:/p; /Package name:/p}' test280214.txt | sed -e '/component:/{ N ; N ; s/\n/\t/g}' -e 's/ (repository version:)/\t\1/' >ausgabe-280214.txt
viele Grüße Frank
Am Freitag, den 28.02.2014, 10:49 +0100 schrieb Thomas Müller:
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 _______________________________________________ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd