Utiliser tail & head simultanément

Résolu
tenohthree Messages postés 50 Date d'inscription   Statut Membre Dernière intervention   -  
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

6 réponses

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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
essayer plutot
tail +3 < fichier | head -n 3
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Essaie

:~$ cat plop
ligne1
ligne2
ligne3
ligne4
ligne5
ligne6
:~$ (tail -n +3 | head -n 3) < plop
ligne3
ligne4
ligne5
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
laura
 
Merci!! Ca marche =D
Quel est le role des parenthèses en fait?
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
bob031 Messages postés 8158 Date d'inscription   Statut Membre Dernière intervention   473
 
joli ... ^^

;-)
0