Как перенаправить весь вывод std из bash в команду типа 'grep' или 'sed', чтобы отфильтровать вывод и затем записать его в файл?
Это то, что я хочу в принципе: exec > >(cat | cat >>/tmp/myoutput.txt)
.
Последняя команда работает как положено.
Но если я заменю первого cat
на grep -v 'foo'
или на sed 's/foo/bar/g'
данные не будут записаны в файл.
Как заставить приведенный выше пример работать с grep или sed?
Справочная информация: я хотел бы отфильтровать сообщения об ошибках из .xsession-errors.
sed -i 's/foo/bar/g' .xsession-errors
не работает, потому что sed заменяет файл .xsession-errors и будущие выходные данные программ не видны.
Таким образом, один из вариантов - заменить строку в /etc /X11 /Xsession кодом, фильтрующим сообщения.
Больше информации здесь:
- Я использовал
cat
2 раза, чтобы показать, что каналы работают в подоболочке, как ожидалось, и перенаправить все в файл.cat
конечно, не нужна в финальной версии. - Думаю, у меня было достаточно вывода для заполнения буферов, потому что я несколько раз делал
ls /usr/
для заполнения буферов.) exec | sed ...
не работает