Ich möchte das Präfix/Suffix aus einem String entfernen. Zum Beispiel, gegeben:
string="hello-world"
prefix="hell"
suffix="ld"
Wie bekomme ich das folgende Ergebnis?
"o-wor"
Ich möchte das Präfix/Suffix aus einem String entfernen. Zum Beispiel, gegeben:
string="hello-world"
prefix="hell"
suffix="ld"
Wie bekomme ich das folgende Ergebnis?
"o-wor"
Verwenden des =~
Operators:
$ string="hello-world"
$ prefix="hell"
$ suffix="ld"
$ [[ "$string" =~ ^$prefix(.*)$suffix$ ]] && echo "${BASH_REMATCH[1]}"
o-wor
HINWEIS: Es ist nicht sicher, ob dies bereits 2013 möglich war, aber es ist definitiv heute möglich (10. Oktober 2021), daher wird eine weitere Option hinzugefügt ...
Da wir mit bekannten festen Zeichenfolgen (prefix
und suffix
) arbeiten, können wir mit einer einzigen Operation ein bash
-Unterstring das gewünschte Ergebnis erhalten.
Eingaben:
string="hello-world"
prefix="hell"
suffix="ld"
Plan:
bash
-Unterstringsyntax: ${string::}
prefix="hell"
überspringen, wird unser 4
seinstring
(${#string}
) minus den Längen unserer festen Zeichenfolgen sein (4
für hell
/ 2
für ld
)Dadurch erhalten wir:
$ echo "${string:4:(${#string}-4-2)}"
o-wor
HINWEIS: Die Klammern können entfernt werden und das Ergebnis bleibt gleich
Wenn die Werte von prefix
und suffix
unbekannt oder variabel sein können, können wir dennoch dieselbe Operation verwenden, aber 4
und 2
durch ${#prefix}
bzw. ${#suffix}
ersetzen:
$ echo "${string:${#prefix}:${#string}-${#prefix}-${#suffix}}"
o-wor
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.