Как остановить «grep» от вырезания трубы

Есть ли способ, чтобы echo в конце трубы просто добавлялось к текущему результату, а не удаляло его все? Например, как я могу сохранить вывод для моей cat и grep и добавить «END OF OUTPUT» в конец вывода из того же самого канала:

 $ cat file.txt | grep 'foo' | echo "END OF OUTPUT" something foo foo foo something END OF OUTPUT 

Подобно тому, как cat - работают:

 echo "START OF OUTPUT" | cat - file.txt 

3 Solutions collect form web for “Как остановить «grep» от вырезания трубы”

Как это:

 { grep foo file.txt; echo END OF OUTPUT; } > output.txt 

Команды групп не запускают подоболочку (за исключением оболочки Bourne).

Вы можете сделать:

 grep foo file.txt | cat - <(echo END OF OUTPUT) > output.txt 

(с ksh, bash или zsh), но это создает еще несколько дополнительных процессов и труб без дополнительной выгоды.

Используйте подоболочку для группового вывода, как это,

(grep foo file.txt; echo "END OF OUTPUT") > output.txt

Это выполнит то, что вы хотите

 $ cat file.txt | grep 'foo' ; echo "END OF OUTPUT" 
  • Выбирайте только каталоги и порядок с помощью эха
  • Почему оболочки выполняют собственные команды «эхо» внутри?
  • Невозможно использовать параметр echo в файле сценария оболочки
  • Есть ли разница между двойным цитированием переменной или целой строкой в ​​эхо
  • Использование разделителя табуляции в срезе в Unix Shell Scripting
  • Как я могу напечатать «-n» с помощью `echo`?
  • Как настроить систему, чтобы не слышать звук символа escape?
  • Проверьте связанные имена файлов и удалите один из них
  • Как получить обратный фон с помощью эха
  • эхо для вывода на печать
  • Bash - синтаксис в эхом
  • Linux и Unix - лучшая ОС в мире.