[shell] modifier une chaine de caractères

Résolu
Bonjour,

Comment faire pour remplacer tous les espaces d'une chaîne de caractères par des retour chariot ?
j'ai essayé avec la commande sed mais je n'y arrive vraiment pas.

Merci de votre aide.
Configuration: ksh

4 réponses

  1. Modérateur
    Essaye voir avec "tr" :
    cat le_fichier | tr -s ' ' '\n'
    mais faudra passer par un fichier temporaire. (le paramètre "-s" n'est là pour que pour supprimer les lignes vides)
    5
    1. sed "s/;\(.\+\)/;\n\1/g" -i fichier
      marche chez moi...
      0
    2. @dagosgdsl, trompé de post et j'arrive pas à modifier...
      sed "s/ /\n/g" -i fichier

      marche chez moi...
      0
  2. Modérateur
    Salut,

    Essaie ça :
    sed -i 's/ /\n/g' le_fichier
    Dans un 1er temps essaie sans le paramètre "-i" (il sert à reécrire directement dans le même fichier sans passer par un fichier temporaire).
    2
    1. ca ne marche pas car il m'écrit des 'n' à la place des espaces.
      et si je fais
      sed  's/ /\\n/g' le_fichier
      il remplace les espaces par des '\n'
      0
  3. Modérateur
    Pourtant chez moi ça marche :
    [jp@Mandrake tmpfs]$ cat texte.txt
    Bonjour,
    
    Comment faire pour remplacer tous les espaces d'une chaîne de caractères par des retour chariot ?
    j'ai essayé avec la commande sed mais je n'y arrive vraiment pas.
    
    Merci de votre aide.
    
    Configuration: ksh
    
    [jp@Mandrake tmpfs]$ sed 's/ /\n/g' texte.txt
    Bonjour,
    
    Comment
    faire
    pour
    remplacer
    tous
    les
    espaces
    d'une
    chaîne
    de
    caractères
    par
    des
    retour
    chariot
    ?
    j'ai
    essayé
    avec
    la
    commande
    sed
    mais
    je
    n'y
    arrive
    vraiment
    pas.
    
    Merci
    de
    votre
    aide.
    
    Configuration:
    ksh
    [jp@Mandrake tmpfs]$
    ;-))
    2
    1. Ca dépend de ton OS en fait, tout les UNIX et Linux n'ont pas les mêmes versions de sed, entre autre. En testant ta commande sur un RedHat et sur un AIX, ça marche sur le RedHat et pas sur l'AIX.
      0
  4. il faut découper la chaîne en mot. essayes ceci

    strtok($string, " ");

    Il découpe une chaîne de caractère en mots. il retourne à la ligne après chaque espace
    1