Les Allergies
Alimentaires
Posez votre question Signaler

[SED]-Supprimer des codes ascii

blux 12858Messages postés 26 août 2001Date d'inscription 26 mai 2012Dernière intervention - Dernière réponse le 27 août 2011 à 10:21
Bonjour,

comment faire pour supprimer la chaine composée des deux car hexa 5C et 0A...

sed "s/\x5c\x0a//" ne fait pas le boulot demandé. Il n'a pas l'air de reconnaitre une expression régulière.

Je ne souhaite pas supprimer les car 5C et 0A qui se trouvent isolés, bien sûr...

Merci de vos réponses.

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Lire la suite 

[SED]-Supprimer des codes ascii »

25 réponses
Réponse
+0
moins plus
Salut

Ben j'ai pas de quoi tester, mais si tes caracteres sont \x5c etc.
il faut que l'expression reguliere soit du type \\x5C il me semble
non ?

++
...Mana mana
   Tutudutu...
Ajouter un commentaire
Réponse
+0
moins plus
Merci de t'être déplacé, je commençais à désespérer !

sed "s/\\x5c\\x0a//" fait que dalle !

En fait, je veux juste supprimer la fin d'une ligne qui contient \ et new-line (pour 'replier' la ligne suivante)

Je suis toujours sous AIX 4.3... :-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
asevere- 4 nov. 2004 à 16:48
Oki :)

Donc c'est juste supprimer les retours chariots dans un fichier...
Maios en fait, je vois pas trop. :(
Quand tu affiche le fichierpar un bete cat, ça te donne quoi ?
tu vois les code hexa a la place des retour ?

...Mana mana
   Tutudutu...
asevere- 4 nov. 2004 à 16:51
Hum, ça me parait pas simplement réalisable avec sed :-/
ou j'oublies quelque chose...

...Mana mana
   Tutudutu...
Ajouter un commentaire
Réponse
+0
moins plus
Ben en fait, je veux pas supprimer TOUS les retour chariots, seuleemnt ceux qui sont après un \, qui veut dire 'suite'.

Ma commande est dans un shell et c'est la sortie d'un sous-système que je veux reformater avant envoi sur l'écran via un more, ça donne un truc comme ça :
/usr/bin/nsradmin <<fin 2>&1 | sed "s/\\x5c\\x0a//" | more 
show last start;completion;name;status
print type:NSR group;name:$GROUP
quit
fin

J'ai essayé avec TR de remplacer temporairement ces car par des car inutilisés puis de faire un sed pour les supprimer, mais je n'ai aucun résultat en sortie...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
asevere- 4 nov. 2004 à 17:21
Ben le probleme, c'est que sed travail sur des lignes,
Donc, on peut supprimer des lignes completes, mais en regrouper deux, là je vois pas :(

...Mana mana
   Tutudutu...
blux- 4 nov. 2004 à 17:25
Si si, y peut joindre des lignes, j'ai fait des recherches sur le net, c'est possible... c'est juste une syntaxe de psychopathe...

Mais je ne veux joindre que certaines lignes, donc en supprimant le LF qui suit mon \ je joins de facto mes 2 lignes puisque je n'ai plus de saut de ligne...

J'ai bon ?

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
asevere- 4 nov. 2004 à 17:43
Voui, suffit juste de retirer le LF ;-)

Par contre, je suis preuneur de la syntax utilisée! :)
...Mana mana
   Tutudutu...
Ajouter un commentaire
Réponse
+0
moins plus
j'm'en vas, la suite demain...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Essaie ça :
sed -e 's/\\x5c//' -e 's/\\x0a//'


Z'@+...che.
JP : Zen, my Nuggets ! ;-)
blux- 5 nov. 2004 à 09:21
'marche pas...

ne suprime que les \, touche pas les sauts de lignes où qu'ils soient...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Ajouter un commentaire
Réponse
+0
moins plus
Hello Blux,


La solution est peut-être de ne pas utiliser sed :)

Je stockerai le résultat de ta commande dans un fichier output.txt, et j'utiliserai vim pour traiter le contenu dans sa globalité :

vim -c "1,$ s/\\\n//g|wq" output.txt

Te donne un output.txt corrigé.

Celà suppose bien évidemment que le newline suive immédiatement le caractère \. Ceci dit, on doit pouvoir améliorer la syntaxe pour couvrir les cas où il y a des espaces, ou des caractères non-alphanumériques.

Sinon, juste une petite remarque... "\\" fonctionne très bien, même avec sed pour matcher "\", pas besoin de codes hexa.

En revanche, en ce qui concerne newline, mon "man sed" sur FreeBSD 4.9 me dit que sed ne va traiter que la ligne qu'on lui donne à l'exception du newline final, et qu'après traitement, il rajoute le newline... tu as donc au final toujours une ligne... ou alors j'ai raté un truc :)

Enfin, si tu trouves ta syntaxe de malade avec sed.. je suis preneur aussi :)


Dal

PS : merci à vi4ever qui a signalé cette utilisation de vi sur ce forum, il y a quelques jours. C'est une utiisation de vi très astucieuse !
Ajouter un commentaire
Réponse
+0
moins plus
vi, je penchais plus pour autre chose que sed, mais j'aurais plutot regardé vers gwak qui travail sur des flux comme sed ;)
j'ai regardé vite fait, mais avec peu de moyens, je jeterai un oeil plus tard dessus :)

...Mana mana
   Tutudutu...
asevere- 5 nov. 2004 à 15:07
du coup, on n'a pas de double... ;-)
Voui, c'est vrai que dans certains cas, ne pas avoir de double peut etre compréhensible ;)

Pour les version, il y a sans doute un moyen... reste a trouver lequel :(

...Mana mana
   Tutudutu...
n3wborn - 27 août 2011 à 03:12
Supprimer les retours chariots

cat fichier | tr -d "\r" > fihier_sortie
zipe31- 27 août 2011 à 10:21
Salut,

A part que là ça supprime TOUS les retours chariots, alors que la demande initiale est conditionnée par le fait de supprimer uniquement les retours chariots précédés d'un anti-slash ;-(

Pour en revenir à "sed", la bonne syntaxe (sur du GNU/Linux avec un GNU-sed) :

sed ':z;N;$! bz;s/\\\n//g' fichier

ou
sed ':z;N;$! bz;s/\x5c\x5c\x0a//g' fichier

Par contre sur un Unix ce serait plutôt :

sed ':z;N;$! bz;s/''echo "\x5c\x5c\x0a"''//g' fichier


Au cas ou, essayer aussi comme suit :

sed '
:z
N                                 
$ !b z                               
s/''echo "\x5c\x5c\x0a"''//g
' fichier



PS. Dans les 2 derniers exemples se sont des quotes inverses Alt Gr + 7 (le 7 du pavé alphanumérique), mais cette p*tain de police employée dans le forum empêche sa mise en évidence ;-(
Capture d'écran pour voir la syntaxe

Notons au passage que ce bug a été maintes fois signalé mais jamais pris en compte. Merci aux webmasters et modos présents sur la discussion pour en faire part en haut lieu.
Ajouter un commentaire
Ce document intitulé « [SED]-Supprimer des codes ascii » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?