grep
предназначен для установки статуса выхода в зависимости от того, найден ли конкретный шаблон, а в некоторых случаях даже используется только для этой цели, и любой вывод подавляется. (Это цель переключения -q
на grep
.)
sed
является «редактором потока» и предназначен для фильтрации потока текста, его преобразования каким-то образом (обычно построчно) по мере прохождения.
Хотя эти две утилиты во многом пересекаются, каждая из них имеет определенную цель.В этом случае вас, очевидно, не интересует, найден ли шаблон, вы просто хотите отфильтровать текстовый поток перед его передачей. Это правильный вариант использования для sed
, а не для grep
.
sed -E '/^Remote:\s*(Checking segments.*)?$/d' delme.txt
Это точный эквивалент:
grep -Ev '^Remote:\s*(Checking segments.*)?$' delme.txt
... за исключением , что команда grep
выдаст статус выхода с ошибкой, если нет строк, кроме тех, которые соответствуют шаблону, и sed
не будет.