[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)
    1. sed "s/;\(.\+\)/;\n\1/g" -i fichier
      marche chez moi...
    2. @dagosgdsl, trompé de post et j'arrive pas à modifier...
      sed "s/ /\n/g" -i fichier

      marche chez moi...
  2. 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. 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]$
      ;-))
      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.
    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).
      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'