gpt4 book ai didi

shell - 日期:额外的操作数 %d' 错误

转载 作者:行者123 更新时间:2023-12-04 17:44:45 25 4
gpt4 key购买 nike

我有一个文本日志文件,格式如下

Thread-28689296: Thu Aug 25 15:18:41 2016 [ info ]: xxxxx xxxxxx xxxxx

所以我想在最后几分钟运行 cron 作业以查找某些错误消息。我写了以下命令
awk -vDate=`date +%b %d %H:%M:%S %Y` -vDate2=`date --date="2 minutes ago" +%b %d %H:%M:%S %Y` '$5 > Date && $5 < Date2' /var/log/dummy.log  | grep "Fatal"

在上面的命令中,我使用字符串 Fatal 搜索时间戳介于现在和 2 分钟前之间的消息。 .

但我收到以下错误
date: extra operand %d'
Try date --help' for more information.
date: extra operand %d'
Try date --help' for more information.

如果我运行 date 命令,我得到的结果如下
date "+%b %d %H:%M:%S %Y"
Aug 25 15:25:01 2016

date --date="2 minutes ago" +"%b %d %H:%M:%S %Y"
Aug 25 15:31:42 2016

所以我的 awk 脚本中的日期命令应该没问题。

我还想将发现的错误消息在 2 分钟内重定向到一个文件以作为警报邮件发送,但我还没有走那么远。

请告诉我我的 awk 脚本有什么问题。非常感谢!

最佳答案

这里的问题是 date本身。让我们看看如何。

你是说:

vDate2=`date --date="2 minutes ago" +%b %d %H:%M:%S %Y`

因为你想用
date --date="2 minutes ago" +%b %d %H:%M:%S %Y

但是,如果您尝试运行它,您会看到出现以下错误:

date: extra operand ‘%d’
Try 'date --help' for more information.



问题是您需要将 FORMAT 控件括在双引号中:
#                             v                  v
$ date --date="2 minutes ago" "+%b %d %H:%M:%S %Y"
Aug 25 14:49:31 2016

完成此操作后,将您的全部 awk 放在一起单线可以是:
awk -v Date="$(date "+%b %d %H:%M:%S %Y")" \
-v Date2="$(date --date="2 minutes ago" "+%b %d %H:%M:%S %Y")" \
'$5 > Date && $5 < Date2' file

注意我正在使用 -v Date="$(date ...)" :
  • $( )用于进程替换,因为 backticks ` are almost deprecated, ir at least considered legacy .
  • date=" things "防止内容有空格时出错。
  • v var=value-v 后使用空格, 自 -vvar=value是gawk 特有的。
  • 关于shell - 日期:额外的操作数 %d' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39145550/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com