Вывести вывод из приложения, вывести на экран и записать в файл?

Вывести вывод из приложения, вывести на экран и записать в файл?

Я запускаю приложение и передаю вывод в grep. Это работает. Однако я хочу вывести вывод как на экран, так и записать в файл.

Итак, я передаю grepрезультат tee:

./app | grep something | tee file.txt

Однако это не показывает (или не записывает) результаты, даже если они 100% (я подтвердил это с помощью двух запущенных экземпляров).

Как выполнить grep вывода приложения, записать в файл и отобразить на экране?

решение1

Команда, как вы ее написали, должна работать. Причин неправильной работы команды может быть несколько.

  1. Приложение отправляет выходной текст на другой вывод, отличный от стандартного.
  2. Неверно введена цепочка символов для поиска с помощью команды grep.

Решение дела №1

  1. Проверьте вручную, отправляет ли приложение нужный текст на выход для поиска../app
  2. Перенаправьте выходной текст в файл ./app > file.txtи проверьте содержимое файла:cat file.txt
  3. Если файл не содержит нужного текста, скорее всего, приложение отправляет вывод в вывод ошибок, а не в стандартный вывод. Поэтому попробуйте перенаправить в файл другим способом
    ./app 2 > file.txtи проверьте содержимое файла еще раз:cat file.txt
  4. Если содержимое файла на этот раз верно, то решение простое. Вам нужно только перенаправить вывод ошибок на стандартный вывод.
./app 2>&1 | grep "something" | tee file.txt

Решение дела №2

  1. Внимательно проверьте строку символов, которую вы используете в качестве шаблона поиска. Заключите ее в кавычки или апострофы, чтобы исключить случайные неверные интерпретации подстановочных знаков, переменных $variablename, регулярных выражений и т. д.
  2. Начните с тестирования поиска с помощью grep для очень простых строк, состоящих только из букв или цифр, которые невозможно интерпретировать неправильно.

Связанный контент