Альтернатива "голові", яка не виходить?


13

Мені потрібна утиліта, яка буде друкувати перші n рядків, але потім продовжувати виконувати, висмоктуючи решту рядків, але не друкуючи їх. Я використовую його, щоб не перевантажувати термінал виведенням процесу, який потрібно продовжувати виконувати (він записує результати у файл).

Я подумав, що можу зробити process | {head -n 100; cat > /dev/null}, але чи є щось більш елегантне?


2
Процес триватиме за головою, він більше не буде друкуватись до терміналу.
123

7
Яку проблему ви насправді намагаєтеся вирішити?
Satō Katsura

2
Що ти маєш на увазі їх смоктати? Якщо ви просто трубите до голови, то решта результатів буде відхилена.
Джулі Пелтьє,

7
@JuliePelletier і stdout будуть закритими, і добре написані програми (ті, що пишуть лише в stdout, все одно) помітять це і закінчуються рано.
cas

@castrap '' PIPE
Сато Кацура

Відповіді:


22

Щоб продовжити "висмоктувати" вихід з processлише друку перших 100 (або будь-яких) рядків:

process | awk 'NR<=100'

Або:

process | sed -n '1,100p'

13
Я зазвичай просто використовую... | tee /dev/null | head ...
David Schwartz

2
@DavidSchwartz так - це те, що я б робив. Набагато переважніше, оскільки ви також можете скинути весь вихід у файл і перевірити його в більш пізній час. Ви ніколи не знаєте, коли це буде потрібно - в гіршому випадку, у вас є файл, навколо якого ви час від часу переписуєте, в кращому випадку ви можете використовувати його як журнал для аналізу того, що / чому сталося.
ВЛАЗ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.