Alternative à la «tête» qui ne sort pas?


13

J'ai besoin d'un utilitaire qui imprimera les n premières lignes, mais continuera ensuite à fonctionner, aspirant le reste des lignes, mais ne les imprimant pas. Je l'utilise pour ne pas submerger le terminal avec la sortie d'un processus qui doit continuer à s'exécuter (il écrit les résultats dans un fichier).

J'ai pensé que je pouvais le faire process | {head -n 100; cat > /dev/null}, mais y a-t-il quelque chose de plus élégant?


2
Le processus continuera après la tête, il n'imprimera tout simplement plus sur le terminal.
123

7
Quel problème essayez-vous réellement de résoudre?
Satō Katsura

2
Que veux-tu dire pour les sucer? Si vous ne faites que diriger vers la tête, la sortie restante sera ignorée.
Julie Pelletier

7
@JuliePelletier et stdout seront fermés et les programmes bien écrits (ceux qui écrivent uniquement sur stdout, de toute façon) le remarqueront et se termineront tôt.
cas

@castrap '' PIPE
Satō Katsura

Réponses:


22

Pour continuer à "aspirer" la sortie de processtout en n'imprimant que les 100 premières lignes (ou autre):

process | awk 'NR<=100'

Ou:

process | sed -n '1,100p'

13
J'utilise habituellement juste... | tee /dev/null | head ...
David Schwartz

2
@DavidSchwartz yep - c'est ce que je ferais. Beaucoup plus préférable, car vous pouvez également vider toute la sortie dans un fichier et l'examiner plus tard. Vous ne savez jamais quand cela sera nécessaire - au pire, vous avez un fichier autour duquel vous écrasez occasionnellement, au mieux, vous pouvez l'utiliser comme journal pour analyser ce qui s'est passé.
VLAZ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.