Retour chariot après le 4eme espaces avec SED

Résolu/Fermé
Rubbick Messages postés 29 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 19 novembre 2014 - 29 oct. 2014 à 12:14
Rubbick Messages postés 29 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 19 novembre 2014 - 29 oct. 2014 à 13:38
Bonjour,

Je cherche a faire un retour chariot après le 4eme espaces avec SED, c'est un retour d'une commande lancé sur un hôte distant via SSH redirigé dans un fichier.

/dev/xvda2 19G 4.6G 14G /dev/xvdb1 50G 766M 46G

et je voudrais comme résultat

/dev/xvda2 19G 4.6G 14G
/dev/xvdb1 50G 766M 46G

j'ai tenté cette commande mais il prend en compte la première occurrence

sed 's/ /\n/' test
/dev/xvda2
19G 4.6G 14G /dev/xvdb1 50G 766M 46G

Merci a vous.

3 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié par mamiemando le 29/10/2014 à 12:54
Le plus simple c'est de le faire avec awk :

(mando@velvet) (~) $ echo "/dev/xvda2 19G 4.6G 14G /dev/xvdb1 50G 766M 46G" | awk '{print $1, $2, $3, $4 "\n" $5, $6, $7, $8}'
/dev/xvda2 19G 4.6G 14G
/dev/xvdb1 50G 766M 46G


Si tu veux le faire avec sed, tu dois faire une expression régulière qui capture 4 premiers mots (séparés d'un espace), et les 4 derniers mots, puis les réécrire séparé d'un retour à la ligne... ce qui est faisable mais plus compliqué à écrire.

(mando@velvet) (~) $ echo "/dev/xvda2 19G 4.6G 14G /dev/xvdb1 50G 766M 46G" | sed -e "s/\(.* .* .* .*\) \(.* .* .* .*\)/\1\n\2/"
/dev/xvda2 19G 4.6G 14G
/dev/xvdb1 50G 766M 46G


Bonne chance
0
Salut,

$ echo "/dev/xvda2 19G 4.6G 14G /dev/xvdb1 50G 766M 46G" | sed 's/ /\n/4'
/dev/xvda2 19G 4.6G 14G
/dev/xvdb1 50G 766M 46G
0
Rubbick Messages postés 29 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 19 novembre 2014 1
29 oct. 2014 à 13:38
La solution proposé par manuel est la plus simple mais vos explications mamiemando.

En tout cas Merci a vous 2 pour le retour rapide.
0