Supprimer espace fin de ligne
remousse
Messages postés
299
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerai supprimer les espaces que j'ai en fin de chaque ligne d'un fichier.
J'utilise sed comme ceci :
Cependant cela me met toutes les lignes sur la premières et jen e vois pas où est mon erreur.
Par avance merci.
J'aimerai supprimer les espaces que j'ai en fin de chaque ligne d'un fichier.
J'utilise sed comme ceci :
echo 'sed "s/\s\+$//" /tmp/file.tmp' > /tmp/file
Cependant cela me met toutes les lignes sur la premières et jen e vois pas où est mon erreur.
Par avance merci.
4 réponses
-
De plus dans mon fichier, après l'espace à la fin de chaque ligne j'ai un CRLF.
Je penses que cela vient de là mais je n'ai pas de solution pour le moment. -
salut,
echo est inutile. Et c'est lui, parce que tu n'as pas mis la commande sed entre guillemets, qui affiche le résultat sur une seule ligne.
sed 's/\s\+\r$//' /tmp/fic.tmp > /tmp/fic
L'usage, et l'utilité avec sed, de fichiers temporaires est discutable. ;) -
En effet le echo me mettait tout sur une même ligne. Cependant ta solution ne fonctionne pas je l'ai donc modifiée et fait ceci qui fonctionne comme je le souhaite :
sed 's/^[ \t]*//;s/[ \t]*$//'/tmp/fic.tmp > /tmp/fic
Pour le fichier temporaire je n'ai pas le choix étant donné que le serveur sur lequel je travail, sed n'a pas l'option -i !
Merci pour ton aide -
hello
on peut utiliser ed pour ne pas passer par un temporaire en l'absence de sed -i (Solaris ? si oui enlever le -e)echo -e '1,$s/^[ \t]*//\n1,$s/[ \t]*$//\nwq\n' | ed -s fichier