[shell] modifier une chaine de caractères

Résolu/Fermé
jebok Messages postés 358 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 23 octobre 2007 - 27 juin 2005 à 17:18
 Ano - 4 mai 2012 à 15:48
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
27 juin 2005 à 20:34
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
sed "s/;\(.\+\)/;\n\1/g" -i fichier
marche chez moi...
0
dagosg > dagosg
11 déc. 2009 à 09:57
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
27 juin 2005 à 17:59
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 lundi 16 mai 2005 Statut Membre Dernière intervention 23 octobre 2007 51
27 juin 2005 à 18:01
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
27 juin 2005 à 18:10
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
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
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