Rechercher : dans
Par :

[MAC REGEX] Saut de ligne ne fonctionne pas

Dernière réponse le 23 mai 2009 à 01:11:57 F_Pignon, le 11 mai 2008 à 22:21:53 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « [MAC REGEX] Saut de ligne ne fonctionne pas » dans :
Antivirus en ligne VoirCette page recense les principaux anti-virus en ligne : BitDefender Computer Associates F-Secure Trend Micro BitDefender BitDefender en ligne Computer Associates Computer Associates en ligne F-Secure F-Secure
Jeux de type FPS gratuits VoirLes FPS (First Person Shooter) sont les jeux de combat en 3D, dans la veine de Doom. Il en existe de nombreux gratuits et légaux. Certes ils ne sont pas graphiquement au niveau des derniers jeux commerciaux, mais ils sont vraiment très funs à...
LaTeX - Mise en forme VoirStyle Les commandes suivantes permettent de modifier le style du texte : \textbf{texte à mettre en gras} permet d'écrire du texte en caractères gras. \textit{texte à mettre en italique} permet d'écrire en italique. \textsc{texte à mettre...
Javascript - L'objet RegExp VoirLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...

1

F_Pignon, le 12 mai 2008 à 09:39:18
  • +1

Personne pour m'aider svp ?

Répondre à F_Pignon

2

BelugaLapin, le 2 mar 2009 à 17:36:29

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

Répondre à BelugaLapin

3

lami20j, le 2 mar 2009 à 18:07:09

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
106485010510997108

Répondre à lami20j

4

BelugaLapin, le 2 mar 2009 à 18:18:33

Sous mon MAC:

>> echo je suis un fichier test | sed 's/ /\x0A/g'
jex0Asuisx0Aunx0Afichierx0Atest

Répondre à BelugaLapin

7

Poireau007, le 23 mai 2009 à 01:04:43

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.

Répondre à Poireau007

8

 lami20j, le 23 mai 2009 à 01:11:57

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

Répondre à lami20j

5

lami20j, le 2 mar 2009 à 20:39:27

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
106485010510997108

Répondre à lami20j

6

BelugaLapin, le 3 mar 2009 à 15:57:56

Ca marche!
Merci pour l'info.

Répondre à BelugaLapin