Comment supprimer des caractères au milieu d'une chaîne dans bash

12

En bash, j'ai une chaîne et j'essaie de supprimer un caractère au milieu de la chaîne. Je sais que nous pouvons supprimer des caractères du début ou de la fin d'une chaîne comme celle-ci:

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

mais comment retirer celui du milieu?

Victor
la source

Réponses:

18

Si vous savez quel (s) caractère (s) supprimer, vous pouvez utiliser la substitution dans l'expansion des paramètres:

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

Ou, si vous savez quels personnages garder:

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

Ou, si vous connaissez le poste:

myVar=${myVar:0:1}${myVar:2:1}  # The first and third characters
choroba
la source
Et si vous ne savez pas non plus? Et si vous savez simplement que vous voulez garder Y et S?
Rutger Huijsmans
@RutgerHuijsmans: vérifiez la mise à jour.
choroba