[MAC REGEX] Saut de ligne ne fonctionne pas

Fermé
F_Pignon Messages postés 23 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mai 2008 - 11 mai 2008 à 22:21
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 23 mai 2009 à 01:11
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 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mai 2008 1
12 mai 2008 à 09:39
Personne pour m'aider svp ?
1
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 mars 2009 à 18:07
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
Sous mon MAC:

>> echo je suis un fichier test | sed 's/ /\x0A/g'
jex0Asuisx0Aunx0Afichierx0Atest
0
Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012 15 > BelugaLapin
23 mai 2009 à 01:04
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569 > Poireau007 Messages postés 83 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 17 octobre 2012
23 mai 2009 à 01:11
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
2 mars 2009 à 20:39
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
Ca marche!
Merci pour l'info.
0