从linux框中获取日志时遇到问题。我的日志类型如下所示。
22-12-2016 13:11:10:324 com.tibco.jtc.ems.JTCLogger::traceMessage() [INFO ] - JTOP: (COUK--141556628-1482412267051) received message: TextMessage={ Header={ JMSMessageID={ID:IRPR03-SB-01.1B458279A852BC1C6BA:6511017} JMSDestination={Topic[$TMP$.IRPR03-CB-01.573D582798FB3554656D.4722]} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={false} JMSCorrelationID={COUK--141556628-1482412267051} JMSType={null} JMSTimestamp={Thu Dec 22 13:11:10 GMT 2016} JM
使用如下命令。
awk -F ' ' '($2 -ge "13:11:10" && $2 -le "13:11:20") {print}' JTC.log > Sidd_JTC.log
根据评论我尝试了如下命令。
start="13:11:10*"
end="13:11:20*"
awk -v start="${start}" -v end="${end}" '$2 >= start && $2 <= end' JTC.log > Sidd_JTC.log
它提供几乎正确的日志,但它的时间戳不到我提到的时间。就像给予结束时间13:11:20
一样只给予13:11:19
。
谢谢大家。
答案 0 :(得分:0)
基本上命令应如下所示:
awk '$2 >= "13:11:10" && $2 <= "13:11:20"' file.log
如果您想使用变量:
start="13:11:10"
end="13:11:20"
awk -v start="${start}" -v end="${end}" '$2 >= start && $2 <= end' file.log
答案 1 :(得分:0)
尝试以下命令 -
awk -F ' ' '($2 >= "13:11:10" && $2 <= "13:11:20") {print substr($2,1,(length($2)-4))}' file
13:11:10
如果您需要添加变量,请使用以下 -
awk -F ' ' '($2 >= x && $2 <= y) {print substr($2,1,(length($2)-4))}' x="13:11:10" y="13:11:20" file
13:11:10
答案 2 :(得分:0)
您可以在mktime
time functions
gawk
进行尝试
awk -vstart="13:11:10" -vend="13:11:20" '
BEGIN{
gsub(":"," ",start);dtstart=mktime("0 0 0 " start);
gsub(":"," ",end);dtend=mktime("0 0 0 " end);
}{
dt=mktime("0 0 0 " gensub(":"," ","g",$2))
}dt>=dtstart && dt<=dtend
' JTC.log