我有一个使用grep命令搜索日志目录的脚本,下面是命令。
export CMD="grep -ie '.*[${FROM_DATE}-${TO_DATE}].*${MESSAGE_TO_SEARCH}' ${LOG_FILE_PATH}/${LOG_FILE} | awk -F 'addInfo' '{print \$2;}' | sed '/^$/d'"
现在RUN_DATE是运行脚本的任何日期。
MESSAGE_TO_SEARCH是我们在日志文件中搜索的任何消息。
在启动脚本之前声明它。
我想修改它在TO和FROM时间之间搜索的脚本,例如:
FROM_TIME = 2016-08-28 13:30:00和
TO_TIME = 2016-08-29 17:00:00
因此脚本应该只提供这个时间内的日志。
我通过使用传递日期作为正则表达式尝试了以下操作,但它不起作用。
struct Person {
let firstName: String
let lastName: String
let gender: Gender
let height: Float
let weight: Float
let age: Int
}
请建议正确的方法。谢谢
EDIT1:请告诉我一种方法,如果正则表达式不合适,我可以这样做。
答案 0 :(得分:1)
如果您只想从日志文件中选择行,则可以采用其他方式使用一些简单的命令,但更具可读性。
1.获取第一行和最后一行的行号。
# SN for start line number, EN for end line number.
export SN=`cat -n LOG_FILE | grep START_TIME | head -1 | awk '{print $1}'`
export EN=`cat -n LOG_FILE | grep END_TIME | tail -1 | awk '{print $1}'`
2.获取你想要的线条。
head -$EN LOG_FILE | tail -$(($EN-$SN+1))
一旦我们知道了我们需要的行号,就可以使用头部和尾部来切断我们不需要的部分。 ^ _ ^