Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[SED]-Supprimer des codes ascii

blux, le jeudi 4 novembre 2004 à 11:33:57
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"
Répondre à blux  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le jeudi 4 novembre 2004 à 16:27:29
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...
Répondre à asevere

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le jeudi 4 novembre 2004 à 16:44:44
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"
Répondre à blux

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le jeudi 4 novembre 2004 à 16:48:25
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...
Répondre à asevere

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le jeudi 4 novembre 2004 à 16:51:51
Hum, ça me parait pas simplement réalisable avec sed :-/
ou j'oublies quelque chose...

...Mana mana
   Tutudutu...
Répondre à asevere

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le jeudi 4 novembre 2004 à 17:04:12
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"
Répondre à blux

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le jeudi 4 novembre 2004 à 17:21:03
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...
Répondre à asevere

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le jeudi 4 novembre 2004 à 17:25:30
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"
Répondre à blux

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le jeudi 4 novembre 2004 à 17:43:40
Voui, suffit juste de retirer le LF ;-)

Par contre, je suis preuneur de la syntax utilisée! :)
...Mana mana
   Tutudutu...
Répondre à asevere

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le jeudi 4 novembre 2004 à 17:28:13
j'm'en vas, la suite demain...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le jeudi 4 novembre 2004 à 18:38:38
Salut,

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


Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Répondre à jipicy

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 5 novembre 2004 à 09:21:35
'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"
Répondre à blux

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
[Dal], le jeudi 4 novembre 2004 à 19:35:38
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 !
Répondre à [Dal]

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le jeudi 4 novembre 2004 à 19:57:48
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...
Répondre à asevere

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
[Dal], le jeudi 4 novembre 2004 à 23:28:16
Re tous :)

Asevere : C'est bien de GNU awk dont tu parles.. (lol.. j'ai cherché gwak dans Google et çà ne donne pas grand chose ;P).

Dans awk il semblerai que print et printf travaillent aussi sur des lignes, print ajoutant automatiquement newline et printf... l'ajoutant si tu inclues "\n" dans le descripteur du format de sortie... celà fait que tu dois utiliser printf avec ou sans \n, selon le cas.

Comme çà, celà devrait marcher :

cat output.txt | awk '{ if (sub(/\\$/, "")) printf "%s ", $0; else printf "%s\n", $0 }'


blux :
- le "\\$" c'est pour matcher le "\" qui se trouve en fin de ligne... il n'a pas besoin de matcher \n, car awk traite aussi des lignes
- le premier printf rajoute un espace après le %s pour que tes lignes soient jointes avec un espace (si tu n'en veux pas, retire le)

C'est un peu compliqué mais celà évite d'avoir à créer un fichier temporaire, par rapport à la solution vi. Le feeling de asevere était bon :)


Dal
Répondre à [Dal]

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 5 novembre 2004 à 09:29:08
Bon ben super-merci à tous ceux qui se sont déplacés !!!
Ce truc-là marche nickel :
/usr/bin/nsradmin <<fin 2>&1 | awk '{ if (sub(/\\$/, "")) printf "%s", $0; else printf "%s\n", $0 }' | more
Heureusement que l'on peut le faire avec les outils standards, je n'ai pas vim, ni gawk...

C'est ça, l'unix propriétaire (AIX4.3) que je peux pas toucher et que les man sont pas installés...

Je respire...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

23


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
[Dal], le vendredi 5 novembre 2004 à 13:27:12
Hehehe,

Ce fut un travail d'équipe... ravi que çà te dépanne :D


Dal
Répondre à [Dal]

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le vendredi 5 novembre 2004 à 00:18:47
Vi bien sur, c'était gawk ;)

Je voyais moins lourd comme syntaxe:
...| awk 'BEGIN{ORS=""}; {n=sub(/\\$/, "", $0)}; {print $0}; !n{print "\n"}'
En otant ce qui n'est pas nécéssaire:
...| awk 'BEGIN{ORS=""}; {n=sub(/\\$/, "")}; {print}; !n{print "\n"}'
Bonne nuit tout le monde ;)
...Mana mana
Tutudutu...
Répondre à asevere

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 5 novembre 2004 à 09:40:03
Je confirme, ça marche aussi...

Merci !

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le vendredi 5 novembre 2004 à 09:52:14
:-)
De rien, ça m'as occupé un peu hier soir ;)

En passant, quand je parle de gawk(gwak!) et d'une maniere générale de tout les utilitaires qui commence par G, c'est en général un portage GNU de l'appli du même nom sans le G, donc la syntaxe et trés souvent identique (sauf version 0.2 de awk et 5.0 de gawk) :-)

++
...Mana mana
   Tutudutu...
Répondre à asevere

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 5 novembre 2004 à 10:27:03
J'avais bien saisi la nuance...
Mais ce qui me gêne dans tout ça, c'est de ne pas savoir où trouver la version de mon awk ou celle de mon sed...
Et surtout de ne pas pouvoir installer ce que je veux sur cette p... de machine...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
asevere, le vendredi 5 novembre 2004 à 10:37:51
Pour les versions:

awk -W version
sed -V
sed --version

Si ça fonctionne ;-)
pour ce qui est de ne pas opuvoir installer quoi que ce soit, c'est pas cool.
Je suppose que c'est une bete en production, vous n'avez pas une machine de test equivalente ?

...Mana mana
   Tutudutu...
Répondre à asevere

22


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
blux, le vendredi 5 novembre 2004 à 11:10:12
Pas de -v, -V, -w, --version, -W qui tiennent...

Pour la machine, je confirme :

une bécane quadri-proc (power PC) qui pilote deux librairies de cartouches avec 4 cartes FC + 2 cartes ethernet optique + 3 contrôleurs SCSI...

du coup, on n'a pas de double... ;-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Répondre à blux

24


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 asevere, le vendredi 5 novembre 2004 à 15:07:00
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...
Répondre à asevere
[langage C] code ascii d'un caractere... (Résolu)bonjour a tous.. j'aurai voulu savoir comment retourner le code ASCII d'une valeur d'un tableau de caractere.. int i,j ; char tab[133]; for(i=0;i www.commentcamarche.net/forum/affich-1544851-langage-c-code-ascii-d-un-caractere
Code ASCII d'une lettre en php ? (Résolu)Bonjour à tous, vu que je ne trouve pas la réponse, je pose la question : Est t'il possible de récupérer le code ASCII d'une variable en php svp? Par ex : $var = "test"; je voudrais pour chaque lettre du mot "test" recuperer le code ASCII de... www.commentcamarche.net/forum/affich-3020455-code-ascii-d-une-lettre-en-php
Sed - Supprimer une ou plusieurs lignes d'un fichierSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la... www.commentcamarche.net/faq/sujet-4839-sed-supprimer-une-ou-plusieurs-lignes-d-un-fichier
Sed - Trucs et astucesTrucs et astuces en vrac Substitution Affichage Suppression Espace et tabulation Ligne vide Intervalle régulier Divers Substitution Substituer "foo" par "bar" à chaque ligne Seulement la 1ère occurrence sed 's/foo/bar/' Seulement... www.commentcamarche.net/faq/sujet-6699-sed-trucs-et-astuces
Sed - Introduction à SED - Part IIISED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"... www.commentcamarche.net/faq/sujet-9558-sed-introduction-a-sed-part-iii
[java] code ascii d'un char mais en unicode 8 (Résolu)Bonjour, Je cherche pour décompresser une chaine codée en lzw, à obtenir le code ascii d'un caractère, pour le moment si je fait : public static int toASCII(char lettre) { return (int)lettre; } il me retourne la valeur unicode sur 16 bits et... www.commentcamarche.net/forum/affich-8254901-java-code-ascii-d-un-char-mais-en-unicode-8
Récuppération code Ascii (Résolu)Bonjour je voudrais savoir comment récuppérer le code ASCII des flèches sur le clavier sous Turbo C de Bordland Merci www.commentcamarche.net/forum/affich-2847041-recupperation-code-ascii
Télécharger K-Lite Codec Pack Corporate C'est une version légèrement modifiée du Pack Full, à destination des entreprises. Certains codecs incompatibles avec l'environnement professionnel du fait de leur licence ont été supprimés. Il est principalement composé de codecs Open Source.... www.commentcamarche.net/telecharger/telecharger-34055372-k-lite-codec-pack-corporate
Télécharger Riva FLV encoderRiva FLV encoder permet de transcoder vos fichiers vidéo au format advanced Flash Video (FLV). Riva FLV encoder supporte l'encodage des formats suivants : AVI, MPEG, Quicktime, WMV : AVI Cinepak Codec by Radius, Cinepak by Supermac Intel... www.commentcamarche.net/telecharger/telecharger-34055237-riva-flv-encoder
Langage C++ - Chaînes de caractères Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une chaîne de caractères est un tableau, comportant... www.commentcamarche.net/cpp/cppstring.php3
Langage C - Les chaînes de caractères Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne de caractères est un tableau, comportant... www.commentcamarche.net/c/cstring.php3
Le code ASCII Le morse a été le premier codage à permettre une communication longue distance. C'est Samuel F.B.Morse qui l'a mis au point en 1844. Ce code est composé de points et de tirets (un codage binaire en quelque sorte...). Il permit d'effectuer des... www.commentcamarche.net/base/ascii.php3
Toutes les réponses pour « [SED] Supprimer des codes ascii »