Script unix

Bonjour,

J'ai un fichier unix qui's'incremente de maniere reguliere de differente données.
Je souhaiterais creer un script qui me recupere l'avant-derniere ligne de ce fichier et qui me l'envoi dans un autre.
... et un autre script qui me recupere l'avant avant (bis) derniere ligne pour egalement me l'envoyer dans un autre fichier.

Est-ce possible ? j'ai essayé avec la commande tail mais en vain ...
Merci si vous pouvez m'aider.

2 réponses

  1. Webmaster
    Salut,

    T'y était presque pourtant!

    tail -2 fichier | head -1 //Avant dernière ligne
    tail -3 fichier | head -1 //Avant-avant dernière ligne

    ++
    1
    1. Merci, je cherchais exactement ça :)
      0
  2. Modérateur
    Salut,

    Sachant que la commande "tail" retourne par défaiut les 10 dernières lignes d'un fichier, en donnant la sortie à "sed" avec l'option "-n" et le numéro de ligne en paramètre, tu devrais t'en sortir.
    [jp@Mandrake tmpfs]$ tail fichier.txt
    Ceci est la ligne 9
    Ceci est la ligne 10
    Ceci est la ligne 11
    Ceci est la ligne 12
    Ceci est la ligne 13
    Ceci est la ligne 14
    Ceci est la ligne 15
    Ceci est l'avant avant dernière ligne
    Ceci est l'avant dernière ligne
    Ceci est la dernière ligne
    
    [jp@Mandrake tmpfs]$ tail fichier.txt | sed -n '8p'
    Ceci est l'avant avant dernière ligne
    
    [jp@Mandrake tmpfs]$ tail fichier.txt | sed -n '9p'
    Ceci est l'avant dernière ligne
    
    [jp@Mandrake tmpfs]$ tail fichier.txt | sed -n '$p'
    Ceci est la dernière ligne
    
    [jp@Mandrake tmpfs]$
    ;-))
    0
    1. Webmaster
      Ou bien alors, il faut inverser le fichier et prendre les lignes 2 et 3 :-)
      [jp@Mandrake tmpfs]$ tac fichier.txt
      Ceci est la dernière ligne
      Ceci est l'avant dernière ligne
      Ceci est l'avant avant dernière ligne
      Ceci est la ligne 15
      Ceci est la ligne 14
      Ceci est la ligne 13
      Ceci est la ligne 12
      Ceci est la ligne 11
      Ceci est la ligne 10
      Ceci est la ligne 9
      
      [jp@Mandrake tmpfs]$ tac fichier.txt | sed -n '3p'
      Ceci est l'avant avant dernière ligne
      
      [jp@Mandrake tmpfs]$ tac fichier.txt | sed -n '2p'
      Ceci est l'avant dernière ligne
      
      [jp@Mandrake tmpfs]$ tac fichier.txt | sed -n '1p'
      Ceci est la dernière ligne
      
      [jp@Mandrake tmpfs]$
      --
      Une belette, un lapin !?
      C'est pas normal!
      0
    2. Merci à vous
      rapide et efficace c genial.
      Bonne journée.
      0
    3. Modérateur
      @asevereOu bien alors, il faut inverser le fichier et prendre les lignes 2 et 3 :-)
      Et si on passe le tout dans un "shaker", qu'on secoue bien fort, après est-ce qu'on peut retrouver l'antépénultième ligne inversée dans l'ordre croissant des aiguilles d'une montre qui retarde de 3 minutes par rapport au méridien de Greenwich village people ???
      0
    4. Webmaster
      @jipicy:D

      Si tu me prete ta montre, c'est gérable...
      Enfin ce ne snt pas les solutions qui manquent quoi ;)

      Bonne nuit
      0