Forum Astuces.divers retirer la premiere ligne, et l'ajouter à la fin d'un nouveau fichier

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
7
juil.
2015

Bonjour à tous.

J'ai un fichier avec un listing.
Je souhaite dans un script
retirer la première ligne du fichier source
Ajouter cette ligne à la fin d'un ficher destination.

Aujourd'hui je fait cela me je me demande si il y aurais une facon plus direct?
sed -n '1p' source.txt >> destination.txt; sed '1d' source.txt > tmpfile; mv -f tmpfile source.txt

  • # Plus court

    Posté par  (site web personnel) . Évalué à 4.

    Salut,

    head -n1 source.txt >> destination.txt && sed -i '1d' source.txt

  • # uniquement avec sed

    Posté par  . Évalué à 3.

    Sed seul suffit pour faire ce que tu demande en faisant usage du hold space:

    sed '1h;1d;$p;$g' mon_fichier.txt

    Si tu veux modifier directement le fichier, ajoute l'option -i, sinon redirige vers un autre fichier.

    Et puisque tu as posté dans le forum astuces par erreur, j'en ajoute une:
    Pour comparer directement le résultat avant après, sans devoir le mettre dans un fichier temporaire, tu peux profiter du process substitution du shell:

    diff -u mon_fichier.txt <(sed '1h;1d;$p;$g' mon_fichier.txt)

    (testé avec bash, je ne sais pas si c'est une fonctionnalité de base de shell posix ou une extension de bash)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.