
Я запускаю приложение и передаю вывод в grep
. Это работает. Однако я хочу вывести вывод как на экран, так и записать в файл.
Итак, я передаю grep
результат tee
:
./app | grep something | tee file.txt
Однако это не показывает (или не записывает) результаты, даже если они 100% (я подтвердил это с помощью двух запущенных экземпляров).
Как выполнить grep вывода приложения, записать в файл и отобразить на экране?
решение1
Команда, как вы ее написали, должна работать. Причин неправильной работы команды может быть несколько.
- Приложение отправляет выходной текст на другой вывод, отличный от стандартного.
- Неверно введена цепочка символов для поиска с помощью команды grep.
Решение дела №1
- Проверьте вручную, отправляет ли приложение нужный текст на выход для поиска.
./app
- Перенаправьте выходной текст в файл
./app > file.txt
и проверьте содержимое файла:cat file.txt
- Если файл не содержит нужного текста, скорее всего, приложение отправляет вывод в вывод ошибок, а не в стандартный вывод. Поэтому попробуйте перенаправить в файл другим способом
./app 2 > file.txt
и проверьте содержимое файла еще раз:cat file.txt
- Если содержимое файла на этот раз верно, то решение простое. Вам нужно только перенаправить вывод ошибок на стандартный вывод.
./app 2>&1 | grep "something" | tee file.txt
Решение дела №2
- Внимательно проверьте строку символов, которую вы используете в качестве шаблона поиска. Заключите ее в кавычки или апострофы, чтобы исключить случайные неверные интерпретации подстановочных знаков, переменных $variablename, регулярных выражений и т. д.
- Начните с тестирования поиска с помощью grep для очень простых строк, состоящих только из букв или цифр, которые невозможно интерпретировать неправильно.