[shell] modifier une chaine de caractères

Résolu
jebok Messages postés 371 Date d'inscription   Statut Membre -  
 Ano -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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. dagosg
       
      sed "s/;\(.\+\)/;\n\1/g" -i fichier
      marche chez moi...
      0
      1. dagosg > dagosg
         
        dsl, trompé de post et j'arrive pas à modifier...
        sed "s/ /\n/g" -i fichier

        marche chez moi...
        0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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. jebok Messages postés 371 Date d'inscription   Statut Membre 51
       
      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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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. Ano
       
      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. de
     
    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