[shell] modifier une chaine de caractères

Résolu
jebok Messages postés 358 Date d'inscription   Statut Membre Dernière intervention   -  
 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.
A voir également:

4 réponses

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

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