Suppression \n si dernier c
lineo
-
dubcek Messages postés 19021 Statut Contributeur -
dubcek Messages postés 19021 Statut Contributeur -
Bonjour,
Savez-vous comment supprimer en shell/bash le denier \n d'une variable ?
J'ai essayé avec du
D'avance, merci
Savez-vous comment supprimer en shell/bash le denier \n d'une variable ?
J'ai essayé avec du
sed -b 's/\n$//'mais ça n'a pas l'air d'être la bonne piste vu que sed est prévu à la base pour travailler par ligne
D'avance, merci
A voir également:
- Suppression \n si dernier c
- Forcer suppression fichier - Guide
- Dernier iphone - Guide
- Suppression compte gmail - Guide
- Suppression page word - Guide
- Suppression pub youtube - Accueil - Streaming
Merci pour ta solution,
Désolé de répondre un peu tard,
Je me suis mal expliqué avec mon \n, en fait je cherche à supprimer le dernier "saut de ligne" dans une variable qui est multiligne. Pas de caractères spéciaux à interpréter avec un echo -e mais du texte brut.
(Et suppression uniquement s'il y a un caractère "saut de ligne" en dernier caractère, sinon on ne fait rien)
Essaie avec
sed '${/^$/d}':Mint ~ $ echo "${var}" | cat -Aabcd$
$
$
Mint ~ $ echo "${var}" | sed '${/^$/d}' | cat -A
abcd$
$
Mint ~ $
PS. Le n'est là que pour montrer les fins de ligne
$ echo "${var}"
abcd
$ echo "${var%$'\n'}"
abcd
$
Exactement ce que je cherchais
Le cat -A est pratique aussi mais il oblige à transformer à l'entrée et rétablir à la sortie, je cherchais quelquechose de plus simple (et avec un $ dans la variable il n'a pas l'air de faire la différence, et il ajoute un saut de ligne comme dernier caractère même quand il n'y en a pas, et le sed ne risque de me supprimer toutes les lignes vides?)
sed '${/^$/d}', le premier "$" désigne la dernière ligne et ensuite on teste si elle est effectivement vide avec "" et on la supprime avec "d" le cas échéant. Les accolades sont là pour signifier que les commandes à l'intérieur ne s'appliquent qu'à la dernière ligne.