Bestimmte Bereiche einer Datei isolieren

lodex

Lt. Junior Grade
Registriert
Dez. 2007
Beiträge
443
Hallo!

Ich sitze gerade hier an einem kleinen Shell Skript und möchte in diesem einen bestimmten Teil einer Datei einlesen. Die Datei sieht beispielhaft so aus:

Code:
[Sektion 1]

direktive 1 = wert 
direktive 2 = wert

[Sektion 2]

direktive 1 = wert 
direktive 2 = wert
direktive 3 = wert

[Sektion 3]

direktive 1 = wert 
direktive 2 = wert


Die Direktiven sollen als Variablen in dem Skript verwendet werden, können aber in der Datei mehrmals vorkommen, weshalb jeweils nur eine bestimmte Sektion geladen werden soll. Die Ausgabe sollte also beim Filtern nach "[Sektion 2]" so aussehen:

Code:
direktive 1 = wert 
direktive 2 = wert
direktive 3 = wert


Ich gehe mal davon aus, dass das mit ein wenig Magie mit sed oder awk kein Thema ist, aber da mein Wissen darüber gegen Null geht, hat hier vielleicht jemand eine Lösung für mich.
Schon mal danke im voraus!

Grüße
lodur
 
Servus,
mit awk ist das tatsächlich einigermaßen problemlos möglich.
Code:
awk '/Sektion 2/ {sect=1} /Sektion 3/ {sect=0} /direktive/ {if (sect==1) print $0}' datei
Wenn ich bei Sektion 2 angekommen bin setze ich einfach eine Varibale auf 1. Erreiche ich die nächste, setze ich sie wieder auf 0. Jede Zeile in der direktive vorkommt wird ausgegeben, falls die Variable 1 ist.
 
Zuletzt bearbeitet:
Werde ich mal ausprobieren, danke!
 
Zurück
Oben