J'ai une chaîne comme ça :
|abcdefg|
Et je veux obtenir une nouvelle chaîne appelée d'une manière ou d'une autre (comme string2) avec la chaîne d'origine sans les deux caractères |
au début et à la fin de celle-ci de sorte que j'obtienne ceci :
abcdefg
Est-ce possible en bash ?
Vous pouvez faire
string="|abcdefg|"
string2=${string#"|"}
string2=${string2%"|"}
echo $string2
Ou si la longueur de votre chaîne est constante, vous pouvez faire
string="|abcdefg|"
string2=${string:1:7}
echo $string2
Ceci devrait également fonctionner
echo "|abcdefg|" | cut -d "|" -f 2
Et aussi ceci
echo "|abcdefg|" | sed 's/^|\(.*\)|$/\1/'
Vous pouvez également utiliser sed pour supprimer le | en ne référençant pas seulement le symbole lui-même mais en utilisant des références positionnelles comme dans :
$ echo "|abcdefg|" | sed 's:^.\(.*\).$:\1:'
abcdefg
Où ':' ; sont les délimiteurs (vous pouvez les remplacer par / ou n'importe quel caractère qui n'est pas dans la requête, n'importe quel signe suivant le s le fera) Ici ^ (caret) signifie au début de la chaîne d'entrée et $ (dollar) signifie à la fin. Le . (point) qui se trouve après l'astérisque et celui qui se trouve avant le signe dollar représentent un seul caractère. En d'autres termes, nous supprimons le premier et le dernier caractère. N'oubliez pas que cette opération supprime tous les caractères, même s'ils ne sont pas présents dans la chaîne.
EX :
$ echo "abcdefg" | sed 's:^.\(.*\).$:\1:'
bcdef