Re: tail head

Page principale

Répondre à ce message
Auteur: guilde.nt
Date:  
À: guilde
Sujet: Re: tail head
> > Est-ce que le peux avoir head and tail d'un fichier en une seule ligne
> > de commande ?
>
> Si tu te contentes d'une seule ligne pour 'tail' :
>
> seq 1 100 | sed -n '1,3p; $p'
> 1
> 2
> 3
> 100


Peut-être que celle-ci convient mieux :

seq 1 100000000 | { { tee /dev/fd/3 | { head >&4 ; cat >/dev/null ; } ; } 3>&1 | tail ; } 4>&1

Le point délicat est le cat out of the bag : quand 'head' finit sa
tâche, il ferme son stdin, stdout et stderr ; son stdin est le côté
read de la pipe dans laquelle écrit 'tee', qui reçoit donc un SIGPIPE
et finit prématurément ; 'cat' est là pour prendre le relay de 'head'
afin que la pipe ne soit pas sans lecteur. L'erreur se manifeste pour
des tailles importantes de données.

-Nicolas T.