Supprimer espace fin de ligne

Fermé
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 - 19 févr. 2013 à 08:46
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 - 19 févr. 2013 à 12:39
Bonjour,

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.


A voir également:

4 réponses

remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
19 févr. 2013 à 09:10
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.
0
Utilisateur anonyme
19 févr. 2013 à 09:31
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. ;)
0
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
19 févr. 2013 à 09:54
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
0
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
19 févr. 2013 à 12:39
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
0