Probleme avec sed

Résolu
vieurou Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -  
vieurou Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -
bonjour

je souhaite a l'aide d'un script shell supprimer les ligne blanche situé en fin de fichier , jutilise pour cela
sed -i -e :a -e '/^[ |\n|\t]*$/ {$d;N;ba' -e '}'
mais ça marche pas , quelqu'un aurait il une idée??

merci d'avance

16 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Voir : sed trucs et astuces#ligne vide

;-))
0
vieurou Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   2
 
j'ai deja essayer et ça n'as pas fonctionner
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Le fichier en question est un fichier Unix ou Windows ? (en rapport aux fins de ligne différentes sur les 2 systèmes)

Peux-tu le mettre en copie sur Cjoint s'il te plait si ce n'est pas du domaine du confidentiel ;-))
0
vieurou
 
bonjur,
le fichier en question à traiter est effectivement un fichier créé sous windows, plus précisément sous le bloc-note de windows
et effectivement c'est du code confidentiel
merci de ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Alors essaie ça (le "^M" s'obtient par la combinaison de touches "CTRL-V" + "CTRL-M") :
sed -e ' s/^M$//' -e :a -e '/^\n*$/ {$d;N;ba' -e '}'
Voir : sed conversion retours chariots dos crlf unix lf

;-))
0
vieurou
 
ça m'embete mais ça marche toujour pas ....
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Essaie ça alors :
sed -e :a -e '/^\r\n*$/ {$d;N;ba' -e '}'
;-))
0
vieurou Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   2
 
infernal mais toujours pas
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Que t'affiches la commandes "cat -A ton_fichier_DOS" comme caractères de fin de ligne et de lignes vides ?

Des "^M$" ???
0
vieurou Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   2
 
effectivement c'est bien des ^M$
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

affiche le résultat de
perl -ne 's/(.)/ord($1)/eg;print' ton_fichier
--
lami20j
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Ben chez moi la commande marche bien ;-\
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

des fois c'est vraiment bizarre, c'est pour ça que je prefère la conversion en ASCII, au moins on peut voir exactement ce qu'on doit supprimer ou ajouter à la fin ;-)
0
vieurou Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   2
 
les retour a la ligne on pour symbole 13
pour la fin du fichier j'ai :
424713
13
13
13
13
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Essaye en ASCII alors :
sed 's/\x0D$//'
;-)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Donc il s'agit bien du Carriage Return \r ;-))
0
vieurou Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   2
 
ecxelent , ça fonctionne avec sed -i -e 's/\x0D$//' fichier_à_modifier
0