Antworten:
Weil sed nicht perliert ist, haben reguläre Ausdrücke keine \d
Abkürzung:
sed 's/[[:digit:]]\+\.//g'
Hier finden Sie eine Dokumentation zu regulären Ausdrücken .
/[[:digit:]]*\. /
stimmt mit der Zeichenfolge überein, foo.
da Sie keine Ziffern zulassen. Wenn Sie eine oder mehrere \+
wie gezeigt verwenden möchten
Zwei Probleme:
sed
unterstützt nicht \d
. Verwenden Sie [0-9]
oder [[:digit:]]
.
+
muss die besondere Bedeutung bekommen backslashed werden: \+
.
interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's).
. Dies hilft
-E
funktioniert nicht für GNU sed, sondern wird -r
stattdessen verwendet.
sed
nur scheiße, wenn es um Portabilität geht ...
-E
auf BSD sed und -r
auf GNU sed), funktionieren weder ( +
noch \+
mit ?
) überhaupt etwas, wohingegen dies in GNU sed möglich ist Bringen Sie sie dazu, mit dem Backslash zu arbeiten. Daher die allgemeine Empfehlung zur Verwendung von Extended Regex in Skripten
Die Manpage sed verweist auf die Manpage re_format. Es werden zwei Unterscheidungen getroffen: (1) obsolet gegenüber erweiterten regulären Ausdrücken; (2) Nicht verbesserte versus verbesserte reguläre Ausdrücke. Alle 4 Kombinationen sind möglich. In sed wird sowohl veraltete als auch erweiterte Unterstützung angeboten, in beiden Fällen jedoch nur für nicht weiterentwickelte. Der Operator \ d ist eine Funktion erweiterter regulärer Ausdrücke, die von sed nicht unterstützt wird.