gpt4 book ai didi

linux - 查看昨天/今天的日志

转载 作者:太空狗 更新时间:2023-10-29 11:18:17 24 4
gpt4 key购买 nike

我正在寻找一种方法来一次查看过去两天的多个日志文件。

起初,我尝试使用 GREP:

#!/bin/bash

yesterday=$(date --date="yesterday" +"%Y-%m-%d")
today=$(date +"%Y-%m-%d")
grep "$yesterday\|$today" *.log | less

这很好,但它不会在匹配之间输出行(其中没有日期的行,例如错误堆栈跟踪 - 这是我真正感兴趣的)...

所以我发现了这个:

#!/bin/bash

yesterday=$(date --date="yesterday" +"%Y-%m-%d")
sed -ne '/$yesterday/,$p' *.log | less

对于每个文件,它输出从第一个匹配项到文件末尾的所有内容。那太完美了……除了一件事……阅读它时,我不知道我在看哪个文件的内容。我想在每一行的开头看到文件名,就像使用 grep 一样。

  • 如何在我的 sed 命令中为每一行添加文件名前缀?
  • 是否有更好/更好的方法来做到这一点?

谢谢;-)

最佳答案

不是 sed 解决方案,而是因为您要求更好/更好的方法来做到这一点...如果您在某个地方有 GNU awk,

awk -v day="$yesterday" 'BEGINFILE {run=0} $0 ~ day {run=1} run == 1 {print FILENAME, $0}' *.log

应该能做到。

解释:

GNU awk 按顺序处理所有文件。 GNU awk 变量 day 被初始化为 shell 表达式 "$yesterday" GNU awk 在处理新文件之前执行 BEGINFILE 规则。此规则清除 run 变量。每当一行 ($0) 匹配 GNU awk 变量 day ("$yesterday") 时,run 变量被设置.当设置了 run 变量时,会打印当前文件的名称 (FILENAME),然后是当前行 ($0)。

关于linux - 查看昨天/今天的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33386709/

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