【问题标题】:grep not writing to filegrep 不写入文件
【发布时间】:2017-02-16 16:41:33
【问题描述】:

我在我的主目录中,并给出了我想要跟踪的两个不同文件的路径。每个文件我都在寻找 2 个变量。我的问题是这个脚本由于某种原因没有写入 saveFile.txt 。 saveFile.txt 与我正在运行的脚本位于同一目录中。

#!/bin/sh
tail -f <path1> -f <path2> | egrep -i --line-buffered '<variable1>|<variable2>' > saveFile.txt

还有一个额外的好处,有没有办法为通过同一个脚本扔到文件中的输出添加间距?有人告诉我,用 Ruby 或 Python 编写它可能更容易哈哈。

谢谢!

【问题讨论】:

  • 你确定egrepstdout 上产生输出吗?您可以尝试不写入文件以查看结果是否存在吗?
  • 你真的把所有东西都放在一行里了吗?
  • 我尝试在不写入文件的情况下执行单个尾部和单个 egrep,它给了我输出。
  • 你不想要>>不是>
  • 您将 variable1 和 variable2 放在单引号中 - 这是故意的吗?

标签: linux bash grep redhat tail


【解决方案1】:

这是一个工作示例:

tail -f ./listener/alert/log.xml ./listener/trace/listener.log  | grep -P --line-buffered '[A-z]+' | tee ~/foo.txt

注意:tail 不需要多个 -f 参数。我在带有 -P 标志的 grep 中使用 perl 正则表达式。最后,我喜欢在控制台上查看输出并将其发送到文件中,因此我使用tee

【讨论】:

  • 只是为了确保我理解有关使用 tee 的手册页,它与使用 '> saveFile.txt' 相同,除了它还显示输出?如果这是一个愚蠢的问题,我很抱歉,但为什么在文本文件之前使用'./'?谢谢!
  • (1) 是的,tee fork 将输出发送到控制台和文件。便利。它与 >> 相同,意味着它不断地附加到文件中。 (2) 我在示例中使用的是相对路径,因此点斜杠仅表示在执行 tail 命令的当前目录中启动路径。您可以轻松地使用绝对路径,例如/var/log.
猜你喜欢
  • 2020-12-07
  • 1970-01-01
  • 2013-01-20
  • 2023-04-01
  • 2015-11-26
  • 2016-12-18
  • 2016-03-11
  • 2015-08-05
  • 2023-03-25
相关资源
最近更新 更多