Alternativa a 'testa' che non esce?


13

Ho bisogno di un'utilità che stamperà le prime n righe, ma che continuerà a funzionare, risucchiando il resto delle linee, ma non stampandole. Lo uso per non sovraccaricare il terminale con l'output di un processo che deve continuare a funzionare (scrive i risultati in un file).

Ho pensato di poter fare process | {head -n 100; cat > /dev/null}, ma c'è qualcosa di più elegante?


2
Il processo continuerà dopo tutto, semplicemente non verrà più stampato sul terminale.
123

7
Quale problema stai effettivamente cercando di risolvere?
Satō Katsura,

2
Cosa intendi per succhiarli? Se si esegue il pipe-to-head, l'output rimanente verrà eliminato.
Julie Pelletier,

7
@JuliePelletier e stdout saranno programmi chiusi e ben scritti (quelli che scrivono solo su stdout, comunque) lo noteranno e termineranno presto.
CAS

@castrap '' PIPE
Satō Katsura,

Risposte:


22

Per continuare a "succhiare" l'output processmentre si stampano solo le prime 100 (o qualsiasi altra riga):

process | awk 'NR<=100'

O:

process | sed -n '1,100p'

13
Di solito uso solo... | tee /dev/null | head ...
David Schwartz il

2
@DavidSchwartz sì - è quello che farei. Molto più preferibile, poiché puoi anche scaricare tutto l'output in un file ed esaminarlo in un secondo momento. Non si sa mai quando sarà necessario - nel peggiore dei casi, si ha un file attorno al quale di tanto in tanto si sovrascrive, nella migliore delle ipotesi, è possibile utilizzarlo come un registro per analizzare cosa / perché è successo.
VLAZ,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.