Utiliser tail & head simultanément

Résolu/Fermé
tenohthree Messages postés 50 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 janvier 2010 - 13 déc. 2009 à 18:18
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 - 25 avril 2012 à 15:16
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

6 réponses

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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
13 déc. 2009 à 18:25
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 samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
13 déc. 2009 à 19:45
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
31 déc. 2011 à 08:11
hello
essayer plutot
tail +3 < fichier | head -n 3
1
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
1 janv. 2012 à 19:45
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
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
1 janv. 2012 à 20:24
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
1 janv. 2012 à 20:26
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
Merci!! Ca marche =D
Quel est le role des parenthèses en fait?
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
2 janv. 2012 à 10:05
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 2/01/2012 à 10:35
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 samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
25 avril 2012 à 15:16
joli ... ^^

;-)
0