[shell] modifier une chaine de caractères

[Résolu/Fermé]
Signaler
Messages postés
358
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
23 octobre 2007
-
 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.

4 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 876
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

sed "s/;\(.\+\)/;\n\1/g" -i fichier
marche chez moi...
> dagosg
dsl, trompé de post et j'arrive pas à modifier...
sed "s/ /\n/g" -i fichier

marche chez moi...
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 876
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).
Messages postés
358
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
23 octobre 2007
52
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'
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 876
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]$
;-))
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.
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