Reecrire le nom de fin de ligne en debut de fichier
Résolu/Fermé
A voir également:
- Reecrire le nom de fin de ligne en debut de fichier
- Partage de photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Fichier rar - Guide
- Impossible de supprimer un fichier - Guide
- Comment réduire la taille d'un fichier - Guide
1 réponse
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
1 mars 2016 à 18:50
1 mars 2016 à 18:50
Salut,
$ cat plop
>blablablablabalbablablablablablabalbal [Toto titi]BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB>blablabla numero2 [Titi TATA]AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>blablablablablablablablablablablabla [Toto tutu]CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
$ sed 's/>/\n/g;s/[[]/\n>/g;s/[]]/\n/g' plop | sed -n '1d;h;n;s/ /_/g;G;s/\n/ /;N;p'
>Toto_titi blablablablabalbablablablablablabalbal
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
>Titi_TATA blablabla numero2
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>Toto_tutu blablablablablablablablablablablabla
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
2 mars 2016 à 08:21
La bonne syntaxe revue et corrigée :
2 mars 2016 à 08:49
Encore merci
Ewi
2 mars 2016 à 09:26
Dans la 1ère commande, je fais en sorte d'afficher chaque sous-partie qui nous intéresse chacune sur une ligne.
On substitue chaque signe ">" par un saut de ligne "\n" et ce autant de fois que nécessaire "g" sur une même ligne.
Idem pour les crochets ouvrants "[", qu'on remplace par un saut de ligne suivi d'un chevron ouvrant.
Idem pour les crochets fermants "[", qu'on remplace par un saut de ligne.
La seconde commande, passée via un "pipe", permet de mettre en forme le texte.
Option qui permet, en corrélation avec la commande "p", de n'afficher sur la sortie standard (l'écran) que ce qui nous intéresse.
Si on rencontre une ligne vide, on passe à la fin du script. En gros, on passe à la ligne suivante. (la commande précédente génère une ligne vide en remplaçant le 1er ">", d'où la nécessité de cette syntaxe)
On place le contenu de la mémoire principale (1ère ligne lue non vide) dans une mémoire secondaire.
On lit la ligne suivante. Le contenu précédent est remplacé par la ligne suivante sans être envoyé sur la sortie standard (absence de commande "p").
Comme c'est la ligne contenant les noms, on substitue tous les espaces par des underscores.
On récupère le contenu de la mémoire secondaire, que l'on ajoute au contenu de la mémoire principale (les deux lignes étant séparées par le caractère "\n"). En gros, on place les blabla après les noms.
On substitue le caractère saut de ligne (\n) par une espace.
On ajoute la ligne suivante au contenu de la mémoire principale.
On affiche le tout sur la sortie standard.
2 mars 2016 à 12:56
Cordialement
Ewi