
Ich habe eine zweizeilige Datei, aus der ich mit sed Informationen für ein Bash-Skript extrahieren möchte.
# File Comment
PrefixForInformation {information to be captured}
Ich muss die Informationen zwischen den geschweiften Klammern erhalten, aber nicht einschließlich. Ich habe den PCRE-Regex /{(.*)}/
oder \s{([^}]*)
das scheint zu funktionieren inOnline Regex 101aber ich kann das nicht in eine funktionierende Sed-Konfiguration übertragen.
Antwort1
$ sed -n 's/.*{\(.*\)}.*/\1/p' file
information to be captured
Wie es funktioniert
-n
Dies weist sed an, nichts auszudrucken, sofern wir es nicht ausdrücklich dazu auffordern.
s/.*{\(.*\)}.*/\1/p
Dieser Ersetzungsbefehl erfasst als Gruppe 1 alles zwischen zwei geschweiften Klammern. Die ganze Zeile wird durch Gruppe 1 ersetzt, gekennzeichnet mit
\1
. Dasp
am Ende sagt sed, dass es das Ergebnis ausgeben soll, wenn eine Übereinstimmung gefunden wurde.