tail -3000 ${file}.* | awk -vstart="${logStartTime}" -vend="${logEndTime}" \
-vdate="${logDate}" '$1 == date && $2 > start && $2 < end {p=1} \
$1 == date && $2 > end {p=0} p == 1 {print}'
目前我可以打印满足条件的那个,但是我想要打印满足我条件的行以及它旁边的行。
答案 0 :(得分:0)
这可以简化一下:
tail -3000 ${file}.* | awk -vstart="${logStartTime}" -vend="${logEndTime}" \
-vdate="${logDate}" '$1 == date && $2 > start && $2 < end {print; getline; print}'
条件之后的print
in,只打印该行(无需设置变量并稍后检查)。使用getline
awk将下一行读入其缓冲区,然后再次print
打印该行。
答案 1 :(得分:0)
这个awk成语会做
awk '/pattern/||!(n=!n)'
如果未设置匹配模式或n,则打印,在评估该前提后将翻回。
在你的情况下,用条件替换/pattern/