Отображать только найденный вывод grep нескольких файлов - PullRequest
0 голосов
/ 15 января 2020

Я использую grep, чтобы найти строку в файле. Grep, вероятно, найдет только один файл, который соответствует имени файла, возможно, двум, но мне нужно только поставить строку, если она его нашла, и просто строку.

grep -oh 'Closing finished' /opt/cpu/hold/closing15{14..23} 

В настоящее время я получаю вывод как:

grep: /opt/cpu/hold/closing1514: No such file or directory
Closing finished
Closing finished
grep: /opt/cpu/hold/closing1517: No such file or directory
grep: /opt/cpu/hold/closing1518: No such file or directory

Я использую это в функции в сценарии bash, в до l oop, чтобы соответствовать «Закрытие завершено», прежде чем двигаться дальше. Поэтому я хочу, чтобы вывод был просто "Закрытие завершено", если он найден, чтобы он соответствовал моему условию пока.

1 Ответ

2 голосов
/ 15 января 2020

Если вы хотите подавить ошибки, связанные с несуществующими файлами, просто используйте параметр -s:

-s, --no-messages
       Suppress error messages about nonexistent or unreadable files.

Т.е. ваша примерная команда должна выглядеть следующим образом:

grep -soh 'Closing finished' /opt/cpu/hold/closing15{14..23} 

В качестве альтернативы вы также можете полностью подавить вывод ошибки, перенаправив ее в / dev / null следующим образом:

grep -oh 'Closing finished' /opt/cpu/hold/closing15{14..23} 2>/dev/null
...