Condicione comportamentos diferentes da linha pipe para grep

0

É estranho para mim que a linha de canal | se comporte de maneira diferente para os seguintes comandos:

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


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

No primeiro comando, o pipeline aguarda até que a execução curl termine. Enquanto no segundo comando, ele passa a saída intermediária para grep enquanto curl está em execução.

O que determina como o tubo se comporta?

ATUALIZAÇÃO:

O problema não é o que sort e grep podem fazer. O problema é como a linha de tubulação sabe disso?

    
por ar2015 24.11.2016 / 05:12

1 resposta

2

Acho que o motivo é o seguinte:

sort não pode começar a classificação (ou pelo menos não pode começar a imprimir o resultado) até terminar de ler a entrada.

grep pode começar a trabalhar & comece a imprimir o resultado assim que começar a receber entrada.

    
por 24.11.2016 / 05:51