Reecrire le nom de fin de ligne en debut de fichier
Résolu
ewilanenmarchombre
-
ewilanenmarchombre -
ewilanenmarchombre -
Script Bash - Shell ou n'importe quoi si ça aide...
Bonjour,
J'ai un fichier (issue d' un logiciel qui ne me permet pas de changer le rendue malheureusement) qui m'affiche mes résultats sous la forme suivantes:
>blablablablabalbablablablablablabalbal [Toto titi]BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB>blablabla numero2 [Titi TATA]AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>blablablablablablablablablablablabla [Toto tutu]CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
Bien entendue, le fichier s'étend sur plusieurs centaines de lignes sans aucun saut à la ligne...
Idéalement, j'aimerais arriver au résultat suivant:
>Toto_titi blablablablablablablablablablaablab
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
>Titi_TATA blablablablablablablablablablablabla
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>Toto_tutu blablablablablablablablablablablablablablablablablablablab
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
Mais à la limite, je pourrais me contenter du resultat suivant
>Toto titi blablablablablablab BBBBBBBBBBBBBBBBB >Titi TATA blablablblablablablablabla AAAAAAAAAAAAAAAAAAAAAAA >Toto tutu blablablablablablablablab CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
Je suis assez débutante en Linux et je suis sur Debian ( si ça change quoi que ce soit...)
J'espère que quelqu'un pourra m'aider...
Cordialement et Merci d'avance
Ewi
Bonjour,
J'ai un fichier (issue d' un logiciel qui ne me permet pas de changer le rendue malheureusement) qui m'affiche mes résultats sous la forme suivantes:
>blablablablabalbablablablablablabalbal [Toto titi]BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB>blablabla numero2 [Titi TATA]AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>blablablablablablablablablablablabla [Toto tutu]CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
Bien entendue, le fichier s'étend sur plusieurs centaines de lignes sans aucun saut à la ligne...
Idéalement, j'aimerais arriver au résultat suivant:
>Toto_titi blablablablablablablablablablaablab
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
>Titi_TATA blablablablablablablablablablablabla
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>Toto_tutu blablablablablablablablablablablablablablablablablablablab
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
Mais à la limite, je pourrais me contenter du resultat suivant
>Toto titi blablablablablablab BBBBBBBBBBBBBBBBB >Titi TATA blablablblablablablablabla AAAAAAAAAAAAAAAAAAAAAAA >Toto tutu blablablablablablablablab CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
Je suis assez débutante en Linux et je suis sur Debian ( si ça change quoi que ce soit...)
J'espère que quelqu'un pourra m'aider...
Cordialement et Merci d'avance
Ewi
A voir également:
- Reecrire le nom de fin de ligne en debut de fichier
- Partage de photos en ligne - Guide
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Impossible de supprimer un fichier - Guide
1 réponse
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
La bonne syntaxe revue et corrigée :
Encore merci
Ewi
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.
Cordialement
Ewi