Linux Bash Script Text aus Datei kopieren?
Hallo,
ich wollte wissen, ob das folgende in Bash möglich ist. Ich habe z.B. folgende Datei:
[abschnitt1]
zeile 1
zeile 2
...
[abschnitt2]
zeile1
zeile2
...
usw.
Jetzt möchte ich z.B. in die Variable abschnitt1 den Text kopieren, der unter abschnitt1 steht, in die Variable abschnitt2, den Text, der unter Abschnitt2 steht usw.
Ist das überhaupt möglich und wenn ja, wie? Wusste leider nicht wonach genau ich googlen soll..., deshalb die Frage.
Danke für alle Antworten im Voraus
3 Antworten
Evtl. könnte das klappen, habe ich aber nicht ausprobiert
cat deinedatei | sed 's/.*[abschnitt1] \(.*\)[abschnitt2]/\1/'
OK, habs mal in AWK implementiert, und es ist doch ein etwas längerer Einzeiler geworden.
Also hab ich es noch ein zweites mal mit den herkömmlichen Shellwerkzeugen implementiert. Ist zwar sogar noch unschöner, aber "etwas" kürzer.
Wenn deine INI-Datei so aussieht:
[foo]
abc
def
ghi
[bar]
lorem
ipsum
dolor
[qux]
23
42
... dann musst du nur diesen formschönen Einzeiler durchlaufen lassen:
eval `cat config.ini | tr ']\n' '= ' | sed -e 's_= _="_g' -e 's_ _";\n_g' -e 's_\[__g'`
echo "$bar"
Wegen der echo-Zeile wird die Variable "bar" ausgegeben, mit der Zeile "lorem ipsum dolor", also genau den drei Zeilen, die in der INI-Datei unter "[bar]" stehen.
Wie geesagt, mit AWK ist es zwar etwas "sauberer", aber auch etwas länger.
Wenn der obige Code nicht zu 100% das macht, was du willst, kannst du ihn ja noch anpassen.
Viel Spaß! :)
Danke! Das ist ein super Ausgangspunkt und mit ein paar Anpassungen exakt was ich brauche
Möglich ist es bestimmt, am ehesten mit sed und awk. Diese Skripte sind dann aber recht kryptisch und mühsam. Da würde sich eine Lösung mit Python eher anbieten - das ist sowieso auf praktisch jedem Betriebssystem zu finden, wo eine bash läuft.