适用于日期范围的awk日期格式,如mm/dd/yyyy hh:mm:ss

适用于日期范围的awk日期格式,如mm/dd/yyyy hh:mm:ss,awk,Awk,我有这样的日志文件我正在尝试检索日期范围 "07/10/2013 01:31:54","SNMP" "07/10/2013 01:31:54","SNMP" .... ... .. "07/10/2013 03:03:54","SNMP" 我正在使用fallowing awk命令,它给出了所有的行,我尝试了不同的组合没有用,在awk中是否需要使用标准的数据格式 awk -F, '"07/10/2013 01:35:40" > $1&&$1 <= "07/10

我有这样的日志文件我正在尝试检索日期范围

"07/10/2013 01:31:54","SNMP" 

"07/10/2013 01:31:54","SNMP" 
.... ... .. 
"07/10/2013 03:03:54","SNMP"
我正在使用fallowing awk命令,它给出了所有的行,我尝试了不同的组合没有用,在awk中是否需要使用标准的数据格式

awk -F, '"07/10/2013 01:35:40" > $1&&$1 <= "07/10/2013 01:50:03"' Mylog.log | wc -l
awk-F'“07/10/2013 01:35:40”>1美元和1美元字符串比较:

$awk-F”'“07/10/2013 01:35:40”>$2和$2字符串比较:

$awk-F”“'07/10/2013 01:35:40”>$2&&$2您有两个问题:CSV解析和日期比较

第一个问题可以使用
match()

第二个问题可以通过使用适当的日期格式来解决,比如,一个令人高兴的副作用是,可以从词汇上比较日期(非时区/DST变化)。 如果您确实在使用
gawk
而不是普通的
awk
nawk
,则可以使用内置的日期函数
mktime()
解析时间戳,并返回一个历元秒序列,该序列允许对日期进行数字比较。
awk
没有原生日期/时间类型,也没有标准的数据/时间库,因此词汇或数字比较是这里最简单的选择

最后一个选项是
gawk
,这是一个令人讨厌的黑客攻击:

/^"07.10.2013 01:35:40"/,/^"07.10.2013 01:50:03"/ {
    # your code here
}
这将使用a限制某些行之间的匹配范围。只要时间是单调递增的,这就适用于您的文件格式–Apache日志不是这样(因为它们是按完成顺序记录的,但默认情况下包含原始请求时间戳,并且不保证单调递增)。

您有两个问题:CSV解析和日期比较

第一个问题可以使用
match()

第二个问题可以通过使用适当的日期格式来解决,比如,一个令人高兴的副作用是,可以从词汇上比较日期(非时区/DST变化)。 如果您确实在使用
gawk
而不是普通的
awk
nawk
,则可以使用内置的日期函数
mktime()
解析时间戳,并返回一个历元秒序列,该序列允许对日期进行数字比较。
awk
没有原生日期/时间类型,也没有标准的数据/时间库,因此词汇或数字比较是这里最简单的选择

最后一个选项是
gawk
,这是一个令人讨厌的黑客攻击:

/^"07.10.2013 01:35:40"/,/^"07.10.2013 01:50:03"/ {
    # your code here
}
这将使用a限制某些行之间的匹配范围。只要时间是单调递增的,这应该适用于您的文件格式——对于Apache日志则不是这样(因为它们是按完成顺序记录的,但默认情况下包含原始请求时间戳,并且不保证是单调递增的)