Coller du texte au début avec sed/ed
Résolu
Little Black Cat
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai par exemple ce fichier:
donnee1
donnee2
donnee3
donnee a mettre au debut1
donnee a mettre au debut2
donnee a mettre au debut3
donnee4
et je veux mettre au début de mon fichier les 3 lignes ci-dessus.
Voilà ce que j'ai tenté, sans succès:
sed '/donnee a mettre au debut/! {H;d}; $G' fichier
Merci de m'aider à trouver la solution à ce petit problème
j'ai par exemple ce fichier:
donnee1
donnee2
donnee3
donnee a mettre au debut1
donnee a mettre au debut2
donnee a mettre au debut3
donnee4
et je veux mettre au début de mon fichier les 3 lignes ci-dessus.
Voilà ce que j'ai tenté, sans succès:
sed '/donnee a mettre au debut/! {H;d}; $G' fichier
Merci de m'aider à trouver la solution à ce petit problème
A voir également:
- Coller du texte au début avec sed/ed
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Copier-coller texte pdf gratuit - Guide
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Historique copier coller - Guide
5 réponses
Merci pour la réponse rapide (comme toujours ;))
En fait ce fichier a été trié et les lignes à mettre au début sont consécutives et commence toutes par le même motif (popup). Leur nombre, quoique petit, est inconnu à priori, il peut y en avoir une, ou deux (c'est pour construire un menu).
En fait ce fichier a été trié et les lignes à mettre au début sont consécutives et commence toutes par le même motif (popup). Leur nombre, quoique petit, est inconnu à priori, il peut y en avoir une, ou deux (c'est pour construire un menu).
Re-
Un peu trop complexe en mettre en oeuvre avec "sed" (et je ne sais même pas si c'est possible d'ailleurs), donc on va faire avec "ed" qui intègre une fonction de déplacement :
En gros, tout ce qui ne contient pas (v) le motif (/début/) est déplacé (m) en fin de fichier ($). On sauve le tout avec la commande "w".
;-))
Un peu trop complexe en mettre en oeuvre avec "sed" (et je ne sais même pas si c'est possible d'ailleurs), donc on va faire avec "ed" qui intègre une fonction de déplacement :
jp@MDK:~/tmpfs ssh$ cat plop donnee1 donnee2 donnee3 donnee a mettre au debut1 donnee a mettre au debut2 donnee a mettre au debut3 donnee4 jp@MDK:~/tmpfs ssh$ ed -s plop <<< $'v/debut/m$\nw' jp@MDK:~/tmpfs ssh$ cat plop donnee a mettre au debut1 donnee a mettre au debut2 donnee a mettre au debut3 donnee1 donnee2 donnee3 donnee4 jp@MDK:~/tmpfs ssh$
En gros, tout ce qui ne contient pas (v) le motif (/début/) est déplacé (m) en fin de fichier ($). On sauve le tout avec la commande "w".
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
>Un peu trop complexe en mettre en oeuvre avec "sed" (et je ne sais même pas si c'est possible d'ailleurs)
Si, si et voici comment:
j'enregistre ce qui ne doit pas apparaître en début de fichier pour ne l'afficher qu'à la fin.
Il ne faut surtout pas utiliser la commande d sinon le fil des commandes n'est pas suivi.
On enregistre la 1ère ligne et on ajoute les suivantes (sinon une ligne vide apparaît quand on colle la 2ème partie du fichier).
Il est vrai que c'est un peu complexe. ;-)
Si, si et voici comment:
#!/bin/sed -nf :a $!{/popup/ {p;bnext} {1h;1!H} :next n ba } {/popup/p H g p }
j'enregistre ce qui ne doit pas apparaître en début de fichier pour ne l'afficher qu'à la fin.
Il ne faut surtout pas utiliser la commande d sinon le fil des commandes n'est pas suivi.
On enregistre la 1ère ligne et on ajoute les suivantes (sinon une ligne vide apparaît quand on colle la 2ème partie du fichier).
Il est vrai que c'est un peu complexe. ;-)