sed-Regex zum Erfassen von Gruppen zwischen Trennzeichen

sed-Regex zum Erfassen von Gruppen zwischen Trennzeichen

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. Das pam Ende sagt sed, dass es das Ergebnis ausgeben soll, wenn eine Übereinstimmung gefunden wurde.

verwandte Informationen