Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
bash: Datei teilweise auswerten

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Scheibenwelt
Gast





BeitragVerfasst am: 07. Mai 2003 13:54   Titel: bash: Datei teilweise auswerten

Hallo,

ich habe folgenden Problem. Ich möchte eine config Datei erstellen, die folgendermaßen aussieht:

<BlOCK1>
Werte
</BLOCK1>

<BLOCK2>
Werte
</BLOCK2>

usw.

Frage, wie kann ich nur einen Teil der Datei auslesen, also den zwischen <> und </>. Die Werte zwischen den Blöcken sollen mit einer "for" schleife abgearbeitet werden. In der Art: for X in `cat <bereich>`; do ... done.
Dazu müsste <bereich> halt isoliert sein. Die Werte sind keine Variablen, daher macht ein "source configdatei" keinen Sinn.

Die Scheibweise mit "<>" ist nicht wichtig, wie die Blöcke getrennt werden, ist egal. head/tail geht nicht, weil die Länge der Blöcke variabel sein soll.
 

Jochen
Gast





BeitragVerfasst am: 07. Mai 2003 14:35   Titel: Re: bash: Datei teilweise auswerten

Also zuerst mal etwas Grundsätzliches.

Da ein File von der Shell immer sequentiell ausgelesen wird, macht es meistens mehr Sinn, das ganze File an Stück zu verarbeiten. Lösungen, die Deine Fragestellung beantworten, werden meist missbraucht: Letzten Endes wird doch das ganze File ausgelesen, aber für jeden einzelnen Block neu geöffnet und durchsucht. Macht bei 10 Blöcken ein 10maliges sequentielles Abarbeiten der Datei, wenn's einmalig auch gereicht hätte.

Wenn Du aber nur einen einzelnen Block brauchst (oder Dich meine Tirade nicht kratzt ), kannst Du so vorgehen:
sed -n -e '/<BLOCK1>/,/<\/BLOCK1>/p' < datafile | while read LINE ; do echo $LINE ; done

Wenn Du die Blockmarkierung variabel halten willst, wird es etwas komplexer:
code:

BLOCK_ID=BLOCK1
SED_CMD='s/<'"$BLOCK_ID"'>/,/<\/'"$BLOCK_ID"'>/p'

sed -n -e "$SED_CMD" < datafile | while read LINE ; do
echo $LINE
done



Jochen
 

scheibenwelt
Gast





BeitragVerfasst am: 07. Mai 2003 15:50   Titel: Re: bash: Datei teilweise auswerten

Danke. Die Triade stört mich absolut nicht. Da die Datei von verschiedenen Skripen ausgewertet wird, wird sie zwangsweise mehrmals gelesen. Wenn auch leider mehrmals pro Skript, aber das läßt sich wohl nicht ändern.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy