Конвейерная линия по-разному ведет себя для sort и grep

Мне странно, что конвейерная линия | ведет себя по-разному для следующих команд:

curl http://norvig.com/big.txt |  sort


curl http://norvig.com/big.txt |  grep employ

В первой команде конвейер ждет, пока выполнение curl завершается. Находясь во второй команде, он передает промежуточный вывод в grep , пока выполняется curl .

Что определяет поведение конвейера?

ОБНОВЛЕНИЕ:

Проблема не в том, что могут делать sort и grep . Проблема в том, откуда это известно трубопроводу?

0
24.11.2016, 08:13
1 ответ

Я думаю, причина в следующем:

sort не может начать сортировку (или, по крайней мере, не может начать печать результата), пока не закончит чтение ввода.

grep может начать работу и начать печатать результат, как только он начнет получать ввод.

2
28.01.2020, 02:34

Теги

Похожие вопросы