[MAC REGEX] Saut de ligne ne fonctionne pas

F_Pignon Messages postés 23 Date d'inscription   Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
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

5 réponses

  1. F_Pignon Messages postés 23 Date d'inscription   Statut Membre 1
     
    Personne pour m'aider svp ?
    1
  2. 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
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    1. BelugaLapin
       
      Sous mon MAC:

      >> echo je suis un fichier test | sed 's/ /\x0A/g'
      jex0Asuisx0Aunx0Afichierx0Atest
      0
      1. 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
      2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > 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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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