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



--
Freundliche Grüße

Thomas Müller
Systemingenieur (IT)
Hainstrasse 6
01662 Meißen
eMail: thomas@mueller-meissen.de