grep
processa arquivos de entrada como fluxos (e é vinculado a E / S); as linhas de saída estão sempre na mesma ordem das linhas de entrada, independentemente de quantos padrões são fornecidos.
Não é necessário avaliar os próprios padrões em qualquer ordem particular, o que pode ser a fonte de sua confusão, mas sempre opera de maneira linear.