Hallo,
eine Frage zu sed.
Ich habe eine Datei, in der die Zeilen alle ungefähr so aufgebaut sind.
[Abj0_2]weiterer Text ...
Text [Text_12] weitere Text...
...
Ich möchte nun mit sed den Inhalt der []-Klammern haben, oder sogar mit den []-Klammern.
Habe bisher folgendes versucht, aber es kommt immer die ganze Zeile zurück:
sed 's/^.*\(\[[a-zA-Z0-9_]+\]\).*$/\1/g'
Wo ist mein Denkfehler???
sed gibt zu viel aus
sed gibt zu viel aus
Oh, yeah!
Hallo Duff,
ich habe hier ersmal selber probiert, da mir bei Deiner Version erstmal nix "böses" aufgefallen ist:
...in einem nächsten Schritt könntest Du die Klammern entfernen bzw. anpassen um die Klammern "verschwinden zu lassen".
Wie allgemeingültig meine Lösung ist, kann ich Dir leider nicht sagen und es geht bestimmt eleganter...
Gruß fuzzy
ich habe hier ersmal selber probiert, da mir bei Deiner Version erstmal nix "böses" aufgefallen ist:
Code: Alles auswählen
fuzzy@deb:~$ cat test.txt
[Abj0_2]weiterer Text ...
Text [Text_12] weitere Text...
fuzzy@deb:~$ sed 's/^[^\[]*//;s/\].*/]/' test.txt
[Abj0_2]
[Text_12]
salto@deb-dose:~$ sed 's/^[^\[]*\(.*\]\).*/\1/' test.txt
[Abj0_2]
[Text_12]
Wie allgemeingültig meine Lösung ist, kann ich Dir leider nicht sagen und es geht bestimmt eleganter...
Gruß fuzzy
Re: sed gibt zu viel aus
Hallo Duff,
a+ Der reguläre Ausdruck a muß mindestens einmal, kann aber beliebig oft vorkommen.
Ich denke an der Stelle ist "*" das was Du für Deinen Fall möchtest, da nicht immer alle [a-zA-Z0-9_]-Zeichen in der Klammer stehen.
Gruß fuzzy
Duff hat geschrieben: sed 's/^.*\(\[[a-zA-Z0-9_]+\]\).*$/\1/g'
a* beschreibt die Häufigkeit von a. Der Ausdruck kann keinmal oder beliebig oft vorkommen.sed 's/^.*\(\[[a-zA-Z0-9_]*\]\).*$/\1/g'
a+ Der reguläre Ausdruck a muß mindestens einmal, kann aber beliebig oft vorkommen.
Ich denke an der Stelle ist "*" das was Du für Deinen Fall möchtest, da nicht immer alle [a-zA-Z0-9_]-Zeichen in der Klammer stehen.
Gruß fuzzy