Alexander Mills Ответов: 1

Перенаправление вывода оболочки через grep


У меня есть node.js сценарий и я хочу, чтобы и stdout, и stderr шли в файл журнала, но сначала я хочу передать stdout и stderr через grep.

Эта работа:

node a.js > a.log 2>&1

Но это не так:

node a.js | grep "error" > a.log 2>&1

Он ничего не выводит в файл, но хуже того, он снова начинает выводить stdout/stderr на терминал, что просто неправильно.

Что я уже пробовал:

(См. оригинальное описание вопроса.)

1 Ответов

Рейтинг:
0

Jochen Arndt

Просто перенаправить stderr к stdout перед прокладкой трубопровода к команда grep:

node a.js 2>&1 | grep "error" > a.log 


При использовании удар, есть стенография для всего вышесказанного:
node a.js |& grep "error" > a.log 

С |&, stdout и stderr из первой команды передаются по трубе во вторую. См. Справочное Руководство Bash[^].