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 !!