Script unix

joel -  
antoinebe Messages postés 10 Statut Membre -
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. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
     
    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. antoinebe Messages postés 10 Statut Membre
       
      Merci, je cherchais exactement ça :)
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      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
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
         
        Ou 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
      2. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        :D

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

        Bonne nuit
        0
    2. se7en
       
      Merci à vous
      rapide et efficace c genial.
      Bonne journée.
      0