Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3345 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  remplacer un caractère spécial en utilisant son code ascii [ sed ]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

remplacer un caractère spécial en utilisant son code ascii [ sed ]

n°292745
FlamM
comme tarte flambée bien sûr !
Posté le 16-07-2003 à 13:36:55  profilanswer
 

J'ai des fichiers de données (type texte ascii) qui se sont mis du jour au lendemain à contenir le caractère <del> (code 7F en hexa et qui a le bon goût de ne pas être imprimable) disséminé un peu partout (je sais pas ce qui a été bidouillé sur le prog d'acquisition, mais passons).
 
j'aimerais, vous l'avez compris virer ce satané caractère à chacune de ses occurrences et le remplacer par une espace ou rien du tout, car ça fout le bordel dans mes modules d'imports.
 
Mais comment faire pour fournir un numéro de caractère dans une expression rationnelle ?
 
en gros faudrait touver un moyen de faire ça :
 
 

Code :
  1. sed 's/le_caractère_en_question//g' fichier.in > fichier.out

 
 
toute suggestion est la bienvenue, même si elle n'utilise pas sed.
 
Mais j'ai pas envie et pas le temps de tout virer à la main une par une. :pt1cable:
 
edit :
 
pourquoi sed 's-\x7F--' input_file ne marche pas chez moi alors que ça fonctionne chez -+ ?


Message édité par FlamM le 17-07-2003 à 11:23:09

---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
mood
Publicité
Posté le 16-07-2003 à 13:36:55  profilanswer
 

n°292749
minusplus
Posté le 16-07-2003 à 13:53:14  profilanswer
 

sed 's-\x7F--' input_file

n°292750
HNO3
I can't use what I can't abuse
Posté le 16-07-2003 à 13:56:46  profilanswer
 

tr -d '\177' < fichier.in > fichier.out

n°292759
FlamM
comme tarte flambée bien sûr !
Posté le 16-07-2003 à 14:19:15  profilanswer
 

merci HNO3, ta solution fonctionne :)  
 
Désolé -+ mais j'avais déjà testé ta solution, et ça ne donne rien :(


---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
n°292760
minusplus
Posté le 16-07-2003 à 14:22:38  profilanswer
 

FlamM a écrit :

merci HNO3, ta solution fonctionne :)  
 
Désolé -+ mais j'avais déjà testé ta solution, et ça ne donne rien :(  


[pts/2][14:26]manu@bassed6:~/temp> hexdump -C truc  
00000000  74 6f 74 6f 7f 74 61 74  61 0a                    |toto.tata.|
0000000a
[pts/2][14:26]manu@bassed6:~/temp> sed "s-\x7F-@@@-" truc  
toto@@@tata
[pts/2][14:26]manu@bassed6:~/temp>  

n°292766
FlamM
comme tarte flambée bien sûr !
Posté le 16-07-2003 à 14:39:34  profilanswer
 

ben je comprends pas parce que ta solution -+ donne ça chez moi :
 
 


flamm@FarStar:/temp/test$ hexdump -C c6l1r50.in
00000000  50 52 50 37 7f 0d 20 20  20 37 3a 44 50 4c 20 58  |PRP7..   7:DPL X|
00000010  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 7f  |               .|
00000020  0d 20 20 20 20 20 44 50  52 20 47 20 20 20 20 20  |.     DPR G     |
00000030  20 20 20 20 20 20 20 20  20 20 7f 0d 20 20 20 20  |          ..    |
00000040  20 48 45 44 20 20 20 20  20 20 20 20 20 20 20 20  | HED            |
00000050  20 20 20 20 20 7f 0d 20  20 20 20 20 52 4f 46 20  |     ..     ROF |
00000060  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000070  7f 0d 20 20 20 20 20 53  41 4e 20 34 30 2e 30 30  |..     SAN 40.00|
00000080  30 20 20 20 20 20 20 20  20 20 20 7f 0d 20 20 20  |0          ..   |
00000090  20 20 49 4e 54 20 20 20  35 2e 30 30 20 20 20 20  |  INT   5.00    |
000000a0  20 20 20 20 20 20 7f 0d  20 20 20 20 20 53 54 50  |      ..     STP|
000000b0  20 20 30 2e 30 35 30 20  20 20 20 20 20 20 20 20  |  0.050         |
000000c0  20 7f 0d 20 20 20 20 20  53 53 43 20 38 30 2e 30  | ..     SSC 80.0|
000000d0  30 30 20 20 20 20 20 20  20 20 20 20 7f 0d 20 20  |00          ..  |
000000e0  20 20 20 53 41 4e 20 32  30 2e 30 30 30 20 20 20  |   SAN 20.000   |
000000f0  20 20 20 20 20 20 20 7f  0d 20 20 20 20 20 48 45  |       ..     HE|
00000100  44 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |D               |
00000110  20 20 7f 0d 20 20 20 20  20                       |  ..     |
00000119
flamm@FarStar:/temp/test$ sed "s-\x7f-@@@-" c6l1r50.in > c6l1r50.out
flamm@FarStar:/temp/test$ hexdump -C c6l1r50.out
00000000  50 52 50 37 7f 0d 20 20  20 37 3a 44 50 4c 20 58  |PRP7..   7:DPL X|
00000010  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 7f  |               .|
00000020  0d 20 20 20 20 20 44 50  52 20 47 20 20 20 20 20  |.     DPR G     |
00000030  20 20 20 20 20 20 20 20  20 20 7f 0d 20 20 20 20  |          ..    |
00000040  20 48 45 44 20 20 20 20  20 20 20 20 20 20 20 20  | HED            |
00000050  20 20 20 20 20 7f 0d 20  20 20 20 20 52 4f 46 20  |     ..     ROF |
00000060  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000070  7f 0d 20 20 20 20 20 53  41 4e 20 34 30 2e 30 30  |..     SAN 40.00|
00000080  30 20 20 20 20 20 20 20  20 20 20 7f 0d 20 20 20  |0          ..   |
00000090  20 20 49 4e 54 20 20 20  35 2e 30 30 20 20 20 20  |  INT   5.00    |
000000a0  20 20 20 20 20 20 7f 0d  20 20 20 20 20 53 54 50  |      ..     STP|
000000b0  20 20 30 2e 30 35 30 20  20 20 20 20 20 20 20 20  |  0.050         |
000000c0  20 7f 0d 20 20 20 20 20  53 53 43 20 38 30 2e 30  | ..     SSC 80.0|
000000d0  30 30 20 20 20 20 20 20  20 20 20 20 7f 0d 20 20  |00          ..  |
000000e0  20 20 20 53 41 4e 20 32  30 2e 30 30 30 20 20 20  |   SAN 20.000   |
000000f0  20 20 20 20 20 20 20 7f  0d 20 20 20 20 20 48 45  |       ..     HE|
00000100  44 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |D               |
00000110  20 20 7f 0d 20 20 20 20  20                       |  ..     |
00000119

 
 
 :??:


---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
n°292768
FlamM
comme tarte flambée bien sûr !
Posté le 16-07-2003 à 14:41:42  profilanswer
 

par contre tr fonctionne impec :
 
 


flamm@FarStar:/temp/test$ tr -d '\177' < c6l1r50.in > c6l1r50.out
flamm@FarStar:/temp/test$ hexdump -C c6l1r50.out
00000000  50 52 50 37 0d 20 20 20  37 3a 44 50 4c 20 58 20  |PRP7.   7:DPL X |
00000010  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0d 20  |              . |
00000020  20 20 20 20 44 50 52 20  47 20 20 20 20 20 20 20  |    DPR G       |
00000030  20 20 20 20 20 20 20 20  0d 20 20 20 20 20 48 45  |        .     HE|
00000040  44 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |D               |
00000050  20 20 0d 20 20 20 20 20  52 4f 46 20 20 20 20 20  |  .     ROF     |
00000060  20 20 20 20 20 20 20 20  20 20 20 20 0d 20 20 20  |            .   |
00000070  20 20 53 41 4e 20 34 30  2e 30 30 30 20 20 20 20  |  SAN 40.000    |
00000080  20 20 20 20 20 20 0d 20  20 20 20 20 49 4e 54 20  |      .     INT |
00000090  20 20 35 2e 30 30 20 20  20 20 20 20 20 20 20 20  |  5.00          |
000000a0  0d 20 20 20 20 20 53 54  50 20 20 30 2e 30 35 30  |.     STP  0.050|
000000b0  20 20 20 20 20 20 20 20  20 20 0d 20 20 20 20 20  |          .     |
000000c0  53 53 43 20 38 30 2e 30  30 30 20 20 20 20 20 20  |SSC 80.000      |
000000d0  20 20 20 20 0d 20 20 20  20 20 53 41 4e 20 32 30  |    .     SAN 20|
000000e0  2e 30 30 30 20 20 20 20  20 20 20 20 20 20 0d 20  |.000          . |
000000f0  20 20 20 20 48 45 44 20  20 20 20 20 20 20 20 20  |    HED         |
00000100  20 20 20 20 20 20 20 20  0d 20 20 20 20 20        |        .     |
0000010e
 

 
 
 
edit :
 
les version des fois que :
 
GNU sed version 3.02
tr (GNU textutils) 2.0


Message édité par FlamM le 16-07-2003 à 14:42:36

---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
n°293003
FlamM
comme tarte flambée bien sûr !
Posté le 17-07-2003 à 11:17:27  profilanswer
 

Question :
 
pourquoi ça ne marche pas chez moi ?
 
sed 's-\x7F--' input_file
 
j'aimerais comprendre


---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
n°293006
minusplus
Posté le 17-07-2003 à 11:33:44  profilanswer
 

extrait de la FAQ de sed :
 


1.5. FAQ abbreviations:
 
   files = one or more filenames, separated by whitespace
   RE  = Regular Expressions supported by sed
   LHS = the left-hand side ("find" part) of "s/find/repl/" command
   RHS = the right-hand side ("replace" part) of "s/find/repl/" cmd.
 
[snip snip]
 
   LHS: In sed, the LHS may be a string literal (e.g., "foo" ) or any
   valid regular expression supported by your version of sed. Some
   versions of sed support things like \t for TAB, \r for carriage
   return, \xNN for direct entry of hex codes, etc. Other versions of
   sed do not support this syntax.
 


 
[:spamafote]
 
 
edit : j'ai la 4.0.7 de la debian


Message édité par minusplus le 17-07-2003 à 11:34:51
n°293008
FlamM
comme tarte flambée bien sûr !
Posté le 17-07-2003 à 11:37:45  profilanswer
 

ok ça explique bien des choses
 
merci beaucoup [:tkilla]


---------------
* La vitesse de la lumière étant supérieure à celle du son, certaines personnes paraissent brillantes jusqu'à ce qu'elles ouvrent leur gueule. *
mood
Publicité
Posté le 17-07-2003 à 11:37:45  profilanswer
 

n°293009
minusplus
Posté le 17-07-2003 à 11:37:54  profilanswer
 

au pire, tu peux t'en tirer en échappant le DEL :
 


[pts/2][11:40]manu@bassed6:~/temp> hexdump -C truc  
00000000  74 6f 74 6f 7f 74 61 74  61 0a                    |toto.tata.|
0000000a
[pts/2][11:41]manu@bassed6:~/temp> sed 's!^?!@@@!' truc  
toto@@@tata
[pts/2][11:41]manu@bassed6:~/temp>  


 
le ^? dans la commande s de sed est le caractère DEL échappé par Bash. Pour l'obtenir : Ctrl-V puis Backspace.

n°293010
Taz
bisounours-codeur
Posté le 17-07-2003 à 11:50:20  profilanswer
 

plutot utiliser tr dans ce genre de cas

n°293011
minusplus
Posté le 17-07-2003 à 11:51:51  profilanswer
 

pour son cas, c'est sûr. le sed c'était juste
(1) pour le cas où il voudrait faire plus compliqué
(2) pour la culture gé ! :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  remplacer un caractère spécial en utilisant son code ascii [ sed ]

 

Sujets relatifs
Remplacer un mot par un autre dans tous les fichiers du répertoire[Windows 98 SE] Comment désinstaller DirectX pour le remplacer?
Applis utilisant Gtk2: le point du pavé numérique devient une virgule.Lyx et caractere grec (alpha,beta, gamma...)
Comment avoir une police de caractère aussi belle sous Windows???[ASCII] code ASCII sous nux et sous windows
Remplacer KDM par GDM sous MDK9.0 ???kel distro special divxbox ?
Pb réseau en utilisant ftp 
Plus de sujets relatifs à : remplacer un caractère spécial en utilisant son code ascii [ sed ]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)