Une petite commande ...

bonjour à tous,

et bien voila je cherche une commande qui puisse m'afficher tous sauf la derniere ligne, prenons un exemple.

ll | tail -n1 -> m'affiche uniquement la derniere ligne

la commande rechercher afficherai toutes les autres sauf celle la

Merci de vos reponses
--
Flox

4 réponses

  1. Modérateur
    Salut,
    ll | sed  '$d'
    ;-))
    0
    1. Modérateur
      Salut,

      avec tac tu lis le fichier à l'envers
      ensuite tu sais comment faire pour lire à compter de la 2ème ligne
      encore une fois tac pour avoir le fichier dans l'ordre normale
      tac fichier | tail +n | tac
      lami20j

      P.S je n'ai pas testé cette commande
      0
      1. cela ne fonctionne pas "nombre invalide de ligne", et je suis désolé pour ces questions mais mes man ne sont pas tres riche.

        je précise que je doit absolument utilisé un tube ll | ......
        0
        1. Modérateur
          Sur ma vieille Sarge
          johan@johan:~$ head --help
          Usage: head [OPTION]... [FICHIER]...
          Afficher les 10 premières lignes de chaque FICHIER sur la sortie standard.
          Avec plus d'un FICHIER, précéder chacun d'une en-tête donnant le nom du fichier.
          Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.
          
          Les arguments obligatoires pour les options de formes longues le sont aussi
          pour les options de formes courtes.
            -c, --bytes=[-]N         afficher les premiers N octets de chaque fichier;
                                       lorsque précédé du préfixe `-', afficher tous les octets
                                       sauf les derniers N octets de chaque fichier
            -n, --lines=[-]N         afficher les N premières lignes au lieu des 10 premières;
                                       lorsque précédé du préfixe `-', afficher toutes les lignes
                                       sauf les N dernières lignes de chaque fichier
            -q, --quiet, --silent    ne pas afficher les en-têtes avec les
                                      noms de fichiers
            -v, --verbose            toujours afficher les en-têtes avec les
                                      noms de fichiers
                --help      afficher l'aide-mémoire
                --version   afficher le nom et la version du logiciel
          
          N peut être suivie d'un suffixe multiplicatif:
          b pour 512, k pour 1024, m pour 1024*1024.
          
          Rapporter toutes anomalies à <bug-coreutils@gnu.org>.
          

          Peut-être ne disposes-tu pas de la version GNU de head?
          Sinon ceci
          johan@johan:~$ head -$(($(cat brol | wc -l ) -1)) brol

          0
        2. je dispose d'une redhat9 la version du head est 4.5.3, et la nouvelle commande que vous proposez ne marche malheureusement pas, d'abord il me dit que la variable doit etre nommé, je remplace par $1 ensuite il me dit que les parentheses sont mal placés alors que cela correspond

          une autre idée car je ne voit pas du tout merci
          0
      2. Modérateur
        head -n - $lines_to_leave
        johan@johan:~$ tail brol
        991
        992
        993
        994
        995
        996
        997
        998
        999
        1000
        johan@johan:~$ head -n -1 brol| tail
        990
        991
        992
        993
        994
        995
        996
        997
        998
        999
        

        man head; man tail
        Johan
        0