Искать слово в выходных файлах

Как объясняется в комментариях к вашему вопросу, переменная RELEASE_COMMAND_OUTPUT получит только STDOUT (стандартный вывод) вашей команды, но не STDERR (стандартная ошибка), как это кажется вашим кейс.

Если вы сомневаетесь в выводе вашей команды, вы можете использовать подстановку процесса на , пометить STDERR красным цветом , как в следующем примере:

command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)

Это перенаправление (часть 2>) STDERR команды команды в качестве входных данных для блока while который напечатает его красным цветом в терминале.

Вы также можете сделать обратное, пометив STDOUT красным цветом:

command | grep .

Поскольку grep действует только в STDOUT

ПРИМЕЧАНИЕ: в некоторых системах вам может понадобиться включите цвет в grep, используя флаг --color=auto. В Macos и Linux обычно он включен по умолчанию.

0
26.07.2017, 23:51
2 ответа

две группы

-execдать истину или ложь, поэтому

find.. -exec grep foo {} \; -exec grep bar {} \;

не будет искать barв файле, если fooне найден.

\;это старая школа (вам нужно сбежать ;), +это новая школа.

3
28.01.2020, 02:25

Вы можете сделать так, как показано, чтобы получить результаты:

find loanwolf/. -type f -name '*.html' -exec grep -lHZ loanwolf_tags {} + |
xargs -r -0 grep -lH new_word

Здесь мы просматриваем обычные файлы с расширением html, скармливаем кучу из них grep и ищем в них строку тегов Loanwolf _. Опция -lбудет отображать имена файлов, в которых такая строка найдена и передана вперед в xargsпосле добавления к именам файлов нуля \0.

xargsполучит эти имена файлов и разделит их на нулевой символ, тем самым восстановив все типы имен файлов. Затем xargs будет собирать эти имена файлов и передавать их в grep, искать новое слово _и отображать совпадающие имена файлов -.

0
28.01.2020, 02:25

Теги

Похожие вопросы