Pour un flux pur (par exemple la sortie d'une commande), vous pouvez utiliser 'tee' pour bifurquer le flux et envoyer un flux à head et un autre à tail. Cela nécessite l'utilisation de la fonction '>( list )' de bash (+ /dev/fd/N) :
( COMMAND | tee /dev/fd/3 | head ) 3> >( tail )
ou en utilisant /dev/fd/N (ou /dev/stderr) plus des sous-shells avec des redirections compliquées :
( ( seq 1 100 | tee /dev/fd/2 | head 1>&3 ) 2>&1 | tail ) 3>&1
( ( seq 1 100 | tee /dev/stderr | head 1>&3 ) 2>&1 | tail ) 3>&1
(Aucune de ces méthodes ne fonctionnera avec csh ou tcsh).
Pour un contrôle un peu plus précis, vous pouvez utiliser cette commande perl :
COMMAND | perl -e 'my $size = 10; my @buf = (); while (<>) { print if $. <= $size; push(@buf, $_); if ( @buf > $size ) { shift(@buf); } } print "------\n"; print @buf;'
0 votes
Que voulez-vous dire par "en une seule fois" ?
0 votes
@cnicutar c.-à-d. ne pas aller tête -10 dossier l'examen des données et ensuite, séparément, je vais faire tail -10 file et l'examen des données
0 votes
@toop Si vous voulez un exemple concret, voir stackoverflow.com/a/44849814/99834