我假设您想查找出现的模式:“xyz”,其中日期/时间值大于或等于指定的日期/时间:“20121912-08:15:55”。这就是我使用GNU awk
. 像这样运行:
awk -v pattern="xyz" -v time="20121912-08:15:55" -f script.awk file
内容script.awk
:
BEGIN {
stamp = convert(time)
}
$0 ~ pattern && convert($1) >= stamp {
i++
}
END {
print i
}
function convert(var) {
x = "(....)(..)(..)-(..):(..):(..)"
y = "\\1 \\3 \\2 \\4 \\5 \\6"
return mktime(gensub(x,y,"",var))
}
结果:
2
或者,这是单线:
awk -v pattern="xyz" -v time="20121912-08:15:55" 'BEGIN { stamp = convert(time) } $0 ~ pattern && convert($1) >= stamp { i++ } END { print i } function convert(var) { return mktime(gensub(/(....)(..)(..)-(..):(..):(..)/,"\\1 \\3 \\2 \\4 \\5 \\6","",var)) }' file