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,

    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
    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 | ......
      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

      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
    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