Re: Conversion carateres hexa dans fichier

Pàgina inicial

Reply to this message
Autor: Olivier Allard-Jacquin
Data:  
A: jeanluctux
CC: GUILDE
Assumpte: Re: Conversion carateres hexa dans fichier
    Bonjour,

jeanluctux a écrit :
> Bonjour,
>
> Je tourne en rond pour convertir les retours lignes entre windows
> et unix ( 0x0A --> 0x0D 0x0A ).
> Ca parait si simple .... mais ....
>
> Ca marche avec perl mais je n'arrive pas avec sed.
> Or, je voudrais utiliser sed, parce que c'est pour tourner sous windows, et j'ai sed.exe qui vient avec le paquet des
> unix tools compilé en statique, c'est léger et bien utile.
> Active-perl est trop lourd à installer.
>
>
> En tout cas, ma question pour le moment, est bien de faire fonctionner
> sous linux .... ca parait tellement simple .... que je n'y arrive pas.
>
> Voici donc mon fichier :
>     prompt> cat -A in.txt
>     aa$
>     bb$
> Et le voici en hexa dump :
>     prompt> od -t x1z in.txt
>     0000000 61 61 0a 62 62 0a                                >aa.bb.<

>
> Voici ce que je veux faire ..... sauf que je ne veux pas de perl :
>     prompt> perl -pi -e "s:\x0A:\x0D\x0A:g" in.txt
>     prompt> od -t x1z in.txt
>     0000000 61 61 0d 0a 62 62 0d 0a                          >aa..bb..<

>
> Voici ce que j'essaie :
>     prompt> sed --in-place  -e "s:\x0A:\x0D\x0A:g" in.txt

>
> oui mais voila, ca ne marche pas :
>     prompt> od -t x1z in.txt
>     0000000 61 61 0a 62 62 0a                                >aa.bb.<

>
> Option :
>     les solutions avec tr sont acceptables (pas reussi non plus).

>
> Merci à ceux qui voudront m'aider,
> Jean-Luc.


    je te recommande la lecture des "sed1line" :
http://sed.sourceforge.net/sed1line_fr.html


    C'est LE document à toujours à avoir sous la main lorsque l'on veut
bricoler quelque chose avec sed :


<extrait>
TEXT CONVERSION AND SUBSTITUTION:

 # IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format
 sed 's/.$//'               # assumes that all lines end with CR/LF
 sed 's/^M$//'              # in bash/tcsh, press Ctrl-V then Ctrl-M
 sed 's/\x0D$//'            # gsed 3.02.80, but top script is easier


 # IN UNIX ENVIRONMENT: convert Unix newlines (LF) to DOS format
 sed "s/$/`echo -e \\\r`/"            # command line under ksh
 sed 's/$'"/`echo \\\r`/"             # command line under bash
 sed "s/$/`echo \\\r`/"               # command line under zsh
 sed 's/$/\r/'                        # gsed 3.02.80


 # IN DOS ENVIRONMENT: convert Unix newlines (LF) to DOS format
 sed "s/$//"                          # method 1
 sed -n p                             # method 2


 # IN DOS ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format
 # Can only be done with UnxUtils sed, version 4.0.7 or higher.
 # Cannot be done with other DOS versions of sed. Use "tr" instead.
 sed "s/\r//" infile >outfile         # UnxUtils sed v4.0.7 or higher
 tr -d \r <infile >outfile            # GNU tr version 1.22 or higher
</extrait>


    Cordialement,


                        Olivier
-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!