Bonjour,
Je débute dans la programmation shell et les commandes Linux.
J'aimerai prendre une partie d'un fichier (la fin à partir d'une certaine ligne) pour la copier au début d'un autre fichier.
J'ai trouvé ceci qui marche tres bien pour ne selectionner qu'une partie de mon fichier :
sed -ne 'mon_motif :/,$ p' < ./temp/tmp.log
Mais comment puis-je faire pour inserer ces lignes au début d'un autre fichier. Je sais que peux utiliser la commandes sed -i mais je ne peux pas imbriquer 2 fois la meme commande ?
Je ne suis pas sure d'avoir été tres claire mais si quelqu'un a compris mon problème....
Merci
# à l'ancienne
Posté par santos . Évalué à 4.
insérer des lignes au début d'un fichier, ça revient à remplacer le contenu du fichier par les lignes à insérer, suivies de l'ancien contenu...
# on renomme le fichier de log
mv ./temp/tmp.log ./temp/tmp.log.bak
touch ./temp/tmp.log
# ... tes commandes qui écrivent dans ./temp/tmp.log ...
# on remet l'ancien contenu
cat ./temp/tmp.log.bak >> ./temp/tmp.log
Ce n'est pas très optimisé, mais pour quelques centaines de lignes c'est largement suffisant.
Sinon avec sed :
sed -i 1i$(ton code) ./temp/tmp.log
[^] # Re: à l'ancienne
Posté par steffy74 . Évalué à 1.
[^] # Re: à l'ancienne
Posté par steffy74 . Évalué à 0.
[^] # Re: à l'ancienne
Posté par Jacques L'helgoualc'h (site web personnel) . Évalué à 1.
Par ailleurs, la commande 1i... va se retrouver comme argument de l'option -i, il faut insérer -e entre l'option -i sans argument et la commande Sed.
La première solution est évidemment plus simple (et plus lisible :), mais on peut, avec l'aide de Bash, emboîter deux (GNU) Seds :
~ $ sed -i.old -e '1{h;r '<(sed -e '/^t/,$!d' fic2)'
d};2{x;G}' fic1
~ $ cat fic2
=== fic2 ===
alpha
bravo
tagada
delta
~ $ diff fic1.old fic1
0a1,3
> tagada
> delta
>
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.