So entfernen Sie Zeichen in der Mitte einer Zeichenfolge in Bash

12

In Bash habe ich eine Zeichenfolge und ich versuche, ein Zeichen in der Mitte der Zeichenfolge zu entfernen. Ich weiß, wir können Zeichen vom Anfang oder Ende eines Strings wie folgt entfernen:

myVar='YES'
myVar="${myVar#'Y'}"
myVar="${myVar%'S'}"

aber wie kann ich den in der mitte entfernen?

Sieger
quelle

Antworten:

18

Wenn Sie wissen, welche Zeichen entfernt werden müssen, können Sie bei der Parametererweiterung die Ersetzung verwenden:

myVar=${myVar/E}  # Replace E with nothing

Oder wenn Sie wissen, welche Zeichen Sie behalten müssen:

myVar=${myVar/[^YS]}  # Replace anything but Y or S

Oder wenn Sie die Position kennen:

myVar=${myVar:0:1}${myVar:2:1}  # The first and third characters
Choroba
quelle
Was ist, wenn Sie es auch nicht wissen? Was ist, wenn Sie nur wissen, dass Sie Y und S behalten möchten?
Rutger Huijsmans
@RutgerHuijsmans: Überprüfen Sie das Update.
Choroba