如何将 date 命令的结果输入 grep 中以过滤另一个命令的结果

如何将 date 命令的结果输入 grep 中以过滤另一个命令的结果

我需要使用格式化日期命令(日期+“%m/%d”)的结果作为grep过滤器来过滤另一个命令的结果,该命令将在系统上显示警报,以便我只看到给定日期的警报。

假设alertcommand 在控制台中给出警报读数。我知道我可以alertcommand | grep 8/10获取今天的日志,但我希望能够输入date +"%m/%d"该日志,这样我就不必每次运行它时都指定日期,但我不知道如何链接它到一个命令中(最好不需要创建临时文件或任何东西,因为这将在客户硬件上运行)。

我在看这个问题是类似的,但无法弄清楚如何使其以同样的方式工作。

答案1

在 bash 中,只需使用类似的东西alertcommand | grep $(date +"%m/%d")

$()在子 shell 中执行命令并将命令的输出作为字符串返回。或者,您可以用反引号将命令括起来,以达到相同的效果。

答案2

您可以简单地将 date 命令的输出分配给另一个变量,并将其用作参数:

myDateVariable=`date +"%m/%d"`
alertcommand | grep $myDateVariable

这样,您可以在将来重新使用日期值并调试任何中间步骤

答案3

在 FreeBSD 的 shell csh 中我不能使用你的两种方法。

1)

cat /var/log/exim/mainlog | grep $(date +%Y-%m-%d)
Illegal variable name.

2)

d=`date +%Y-%m-%d`;cat /var/log/exim/mainlog|grep $d
d=2011-11-13: Command not found.

但我可以直接使用反引号代码,如下所示:

cat /var/log/exim/mainlog | grep `date +%Y-%m-%d`

相关内容