Ich habe dieses Beispiel gesehen:
hello=ho02123ware38384you443d34o3434ingtod38384day
echo ${hello//[0-9]/}
Welches folgt dieser Syntax: ${variable//pattern/replacement}
Leider pattern
scheint das Feld keine vollständige Regex-Syntax zu unterstützen (wenn ich es verwende .
oder \s
zum Beispiel versuche, mit den Literalzeichen übereinzustimmen).
Wie kann ich eine Zeichenfolge mit vollständiger Regex-Syntax suchen / ersetzen?
\s
ist nicht Teil der von POSIX definierten Standardsyntax für reguläre Ausdrücke (weder BRE noch ERE). Es ist eine PCRE-Erweiterung und meistens nicht über die Shell erhältlich. [[:space:]]
ist das universellere Äquivalent.
\s
kann [[:space:]]
übrigens .
durch ersetzt werden ?
, und extglob-Erweiterungen der Baseline-Shell-Mustersprache können für Dinge wie optionale Untergruppen, wiederholte Gruppen und dergleichen verwendet werden.