从应用程序 Grep 输出,显示到屏幕上并写入文件?

从应用程序 Grep 输出,显示到屏幕上并写入文件?

我运行一个应用程序并将输出通过管道传输到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 测试搜索仅由字母或数字组成且不会被误解的非常简单的字符串。

相关内容