grep
é projetado para definir um status de saída de acordo com a existência ou não de um padrão específico e, em alguns casos, é usado somente para essa finalidade e qualquer saída é suprimida. (Esse é o propósito do -q
mudar para grep
.)
sed
é o "Stream EDitor" e foi projetado para filtrar um fluxo de texto, convertendo-o de alguma forma (geralmente linha por linha) conforme ele passa.
Embora haja muita sobreposição entre esses dois utilitários, cada um deles tem uma finalidade específica. Nesse caso, evidentemente, você não está interessado em saber se o padrão é encontrado ou não, basta filtrar o fluxo de texto antes de transmiti-lo. Esse é um caso de uso adequado para sed
, não para grep
.
sed -E '/^Remote:\s*(Checking segments.*)?$/d' delme.txt
Este é o equivalente exato de:
grep -Ev '^Remote:\s*(Checking segments.*)?$' delme.txt
... exceto que o comando grep
fornecerá um status de saída de erro se não houver linhas além daquelas que correspondem ao padrão e sed
não.