【发布时间】:2018-08-25 01:09:55
【问题描述】:
我,新手,已经在这个论坛上下搜索过,并尝试了几种 awks、seds 和 grep。
我正在尝试搜索日志文件以输出日期和时间内的所有日志。
很遗憾,我正在搜索的所有日志都有不同的日期格式。
我确实让这个工作了:
awk '$0 >= "2018-08-23.11:00:00" && $0 <= "2018-08-23.14:00:00"' catalina.out
针对特定的日期格式。
我无法让这些日期格式正常工作,也许是间距问题?
2018-08-23 11:00:00,或 2018 年 8 月 23 日 11:00:00
一些我尝试过的示例:
sed -n '/2018-08-23 16:00/,/2018-08-23 18:00/p' testfile.txt
sed -n '/Feb 23 13:55/,/Feb 23 14:00/p' testfile.txt
awk '$0 >= "2018-08-23 17:00:00" && $0 <= "2018-08-23 19:00:00"' testfile.txt
我也尝试过设置变量: FROM="2018 年 8 月 23 日 17:00:00" , TO="2018 年 8 月 23 日 19:00:00"
awk '$0 >= "$FROM" && $0 <= "$TO"' testfile.txt
谁能帮我解决这个问题?
更新:我让这个适用于 2018-08-23 11:00:00 格式
grep -n '2018-08-23 11:[0-9][0-9]' testfile.txt | head -1
grep -n '2018-08-23 12:[0-9][0-9]' testfile.txt | tail -1
awk 'NR>=2 && NR<=4' testfile.txt > rangeoftext
但我无法让它与 2018 年 8 月 23 日 11:00:00 一起使用 -- 再说一次,我认为这可能是空间问题?不知道怎么解决....
【问题讨论】:
-
grep用于执行g/re/p和sed用于执行s/old/new/。这些都不是你想要做的,所以你甚至不应该考虑grep或sed。对于所有其他文本操作,例如你描述的问题,你应该使用awk。如果您发布包含简洁、可测试样本输入和预期输出的 minimal reproducible example,那么我们可以为您提供帮助。如果不清楚,请参阅How to Ask。 -
不是您问题的答案,但您应该查看 Splunk。它是处理日志的最佳工具之一。它采用大多数日期格式,您可以很好地掌握。