我想要获取结果,让我们从2017-12-19 19:14
直到一整天从一个看起来像这样的日志文件中说出来 -
/var/opt/MarkLogic/Logs/ErrorLog_1.txt:2017-12-19 19:14:00.723 Info: Saving /var/opt/MarkLogic/Forests/Meters/00001829
/var/opt/MarkLogic/Logs/ErrorLog_1.txt:2017-12-19 19:14:01.134 Info: Saved 9 MB at 22 MB/sec to /var/opt/MarkLogic/Forests/Meters/00001829
/var/opt/MarkLogic/Logs/ErrorLog_1.txt:2017-12-19 19:14:01.376 Info: Merging 19 MB from /var/opt/MarkLogic/Forests/Meters/0000182a and /var/opt/MarkLogic/Forests/Meters/00001829 to /var/opt/MarkLogic/Forests/Meters/0000182c, timestamp=15137318408510140
/var/opt/MarkLogic/Logs/ErrorLog_1.txt:2017-12-19 19:14:02.585 Info: Merged 18 MB in 1 sec at 15 MB/sec to /var/opt/MarkLogic/Forests/Meters/0000182c
/var/opt/MarkLogic/Logs/ErrorLog_1.txt:2017-12-19 19:14:05.200 Info: Deleted 15 MB at 337 MB/sec /var/opt/MarkLogic/Forests/Meters/0000182a
/var/opt/MarkLogic/Logs/ErrorLog_1.txt:2017-12-19 19:14:05.202 Info: Deleted 9 MB at 4274 MB/sec /var/opt/MarkLogic/Forests/Meters/00001829
我是Unix的新手,熟悉grep命令。我尝试了下面的命令
date="2017-12-19 [19-23]:[14-59]"
echo "$date"
grep "$date" $root_path_values
但它会抛出无效的范围结束错误。有解决方案吗日期将来自一个变量,因此它将是不可预测的。因此,不要只是记住这个例子。 $ root_path_values是一系列错误文件,如errorLog.txt,errorLog_1.txt,errorLog_2.txt等。
答案 0 :(得分:0)
我想获取结果,比如说从
2017-12-19 19:14
到整天……日期将来自一个变量……
这不是正则表达式的工作。由于时间戳具有合理的形式,因此我们可以简单地将其作为一个整体进行比较。 g。:
start='2017-12-19 19:14'
end='2017-12-20'
awk -vstart="$start" -vend=$end 'start <= $0 && $0 < end' ErrorLog_1.txt
答案 1 :(得分:-1)
egrep '2017-12-19 (19|2[0-3])\:(1[4-9]|[2-5][0-9])\:*\.*' path/to/your/file
试试这个正则表达式。
如果您需要变量中的模式:
#!/bin/bash
date="2017-12-19 (19|2[0-3])\:(1[4-9]|[2-5][0-9])\:*\.*"
egrep ${date} path/to/your/file