[MAC REGEX] Saut de ligne ne fonctionne pas

F_Pignon Messages postés 23 Statut Membre -  
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
Bonjour à tous,


J'ai un souci avec les caractères spéciaux quand j'utilise la ligne de commande de la console
(avec Mac OS X, distrib. léopard et le shell est bash)

Par exemple, pour remplacer les espaces par des saut de ligne ou des tabulations sur un fichier, voila ce que ça donne :


>cat fichier.txt
je suis un fichier test

>sed "s/ /\n/g" fichier.txt | more
je\nsuis\nun\nfichier\ntest

>sed "s/ /\t/g" fichier.txt | more
je\tsuis\tun\tfichier\ttest

au lieu d'avoir respectivement :

>sed "s/ /\n/g" fichier.txt | more
je
suis
un
fichier
test

>sed "s/ /\t/g" fichier.txt | more
je	suis	un	fichier		test



Si quelqu'un avait une idée ?

Merci d'avance
A voir également:

5 réponses

F_Pignon Messages postés 23 Statut Membre 1
 
Personne pour m'aider svp ?
1
BelugaLapin
 
Lorsque tu utilises les expressions régulières il faut ajouter l'option -E (sous mac) ou -e (sous linux).
Par exemple :
sed -E "s/ /\n/g" fichier.txt | more


Par contre, sous mac (et non sous linux), nous ne pouvons pas utiliser le saut de ligne comme adresse (texte de remplacement). Voir "man sed" :
The escape sequence \n matches a newline character embedded in the pattern space. You cannot, however, use a literal newline character in an address or in the substitute command.

Je ne sais pas ce qu'il existe comme solution...
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

Essaie comme ça
lami20j@debian:~$ echo je suis un fichier test
je suis un fichier test
lami20j@debian:~$ echo je suis un fichier test | sed 's/ /\x0A/g'
je
suis
un
fichier
test
0
BelugaLapin
 
Sous mon MAC:

>> echo je suis un fichier test | sed 's/ /\x0A/g'
jex0Asuisx0Aunx0Afichierx0Atest
0
Poireau007 Messages postés 85 Statut Membre 15 > BelugaLapin
 
pour info vu que tu as résolu ton pb :

"Sous Mac" donc Bash (Bourne Shell Again) , je pense que tu aurais pu utiliser echo -e car echo seul ne fonctionne effectivement pas (la raison c'est bash pas mac =)) ce qui evite d'utiliser perl.
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570 > Poireau007 Messages postés 85 Statut Membre
 
Salut,

L'utilisation de l'option -e est très pratique quand on veut afficher par exemple avec echo
$ echo -e "ligne1\nligne2\nligne3"
ligne1
ligne2
ligne3
Mais la question était : remplacer les espaces par des saut de ligne ou des tabulations sur un fichie

La commande echo ne permet pas de faire un remplacement. La commande echo affiche tout simplement une ligne de texte.

P.S. Pour quel raison éviter d'utiliser Perl?! Ce n'est pas la peste quand même!!!
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Re,

Essaie avec perl
lami20j@debian:~$ echo je suis un fichier test
je suis un fichier test
lami20j@debian:~$ echo je suis un fichier test | perl -ne 's/ /\n/g;print'
je
suis
un
fichier
test
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BelugaLapin
 
Ca marche!
Merci pour l'info.
0