记录时间戳basiss上的日志

时间:2017-01-26 12:09:45

标签: linux awk

从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

谢谢大家。

3 个答案:

答案 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