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?

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.