Utiliser tail & head simultanément

Résolu
tenohthree Messages postés 55 Statut Membre -  
bob031 Messages postés 8228 Statut Membre -
Bonjour,
comment je peut utiliser tail & head simultanément mon objectif est d'afficher la 2 éme ligne d'un fichier qui contien 3 ligne
tail -2 raprt.txt
head -2 raprt.txt
Configuration: Linux
Firefox 3.0.3

6 réponses

  1. joséphine
     
    Salut,

    head -2 raprt.txt | tail -1

    Décomposons :
    "head -2 raprt.txt" prélève les 2 premières lignes du fichier raprt.txt
    "|" transmet les données au programme suivant
    "tail -1" récupère les données du pipe et ne conserve que la dernière ligne

    Tu peux aussi ajouter ">> cible.txt" si tu veux sauvegarder le résultat dans un fichier ou "| less" si la sortie est trop importante pour tenir sur l'écran.

    ++
    1
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    [tmpfs]$ cat plop
    ligne 1
    ligne 2
    ligne 3
    
    [tmpfs]$ head -2 plop | tail -1
    ligne 2
    
    [tmpfs]$ tail -2 plop | head -1
    ligne 2
    
    [tmpfs]$

    ;-))
    1
  3. bob031 Messages postés 8228 Statut Membre 473
     
    Hi,

    > redfox@mandriva[192.168.1.2]$ cat plop
    ligne 1
    ligne 2
    ligne 3
    > redfox@mandriva[192.168.1.2]$ tail -n+2 plop | head -n-1
    ligne 2
    > redfox@mandriva[192.168.1.2]$


    :-) :-)
    1
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    essayer plutot
    tail +3 < fichier | head -n 3
    1
    1. laura
       
      Oui mais ma commande (c'est pour un exercice) doit être de la forme
      ... < fichier
      les ... étant à remplacer par une commande utilisant soit tail, soit cut, soit head.
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Avec "tail" et "head" ce n'est pas possible.
      La syntaxe donnée par "dubcek" est la seule envisageable.

      Avec une seule commande sans le "pipe" il te faut utiliser un autre outil, comme "sed" par exemple.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. laura
     
    Et comment faire si l'on ne connait pas le nom du fichier à l'avance, et que l'on souhaite faire une commande qui récupère les lignes 3 à 5 par exemple d'un fichier quelconque?
    (Je pensais faire un tail +3 | head -n 2 < fichier mais ça ce fonctionne pas... :/)
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Essaie

      :~$ cat plop
      ligne1
      ligne2
      ligne3
      ligne4
      ligne5
      ligne6
      :~$ (tail -n +3 | head -n 3) < plop
      ligne3
      ligne4
      ligne5
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      La syntaxe donnée par "dubcek" est la seule envisageable.
      Je savais bien qu'en disant ça, un empêcheur de tourner en rond se pointerait ;-)))

      Merchi ;-)
      0
    3. laura
       
      Merci!! Ca marche =D
      Quel est le role des parenthèses en fait?
      0
    4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
       
      Sans parenthèse, plop serait injecté dans tail.

      Ainsi on aurait pu écrire :

      (mando@aldur) (~) $ tail -n+3 < plop | head -n3
      ligne3
      ligne4
      ligne5


      ... ou plus simplement :

      (mando@aldur) (~) $ tail -n+3 plop | head -n3
      ligne3
      ligne4
      ligne5
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      ou en une seule commande tail, head ou cut
      $ cat a1 
      1 
      2 
      3 
      4 
      5 
      6 
      7 
      8 
      9 
      $ cut -d'^V^J'  -f 3-5 < a1 
      3 
      4 
      5 
      $ 
      0
  7. bob031 Messages postés 8228 Statut Membre 473
     
    joli ... ^^

    ;-)
    0