awk:检查一个数字是否在两个数字之间

时间:2016-07-12 02:54:51

标签: awk gawk

我有一个格式低于

的文件
02 Jul 2016 00:00:00 2736359
02 Jul 2016 00:02:00 2736594
02 Jul 2016 00:04:00 2736828
02 Jul 2016 00:06:00 2737068
02 Jul 2016 00:08:00 2737303
02 Jul 2016 00:10:00 2737542
02 Jul 2016 00:12:00 2737775
02 Jul 2016 00:14:00 2738011
02 Jul 2016 00:16:00 2738251
02 Jul 2016 00:18:00 2738483

第一列是时间戳,第二列是数字。给定输入2737778,我希望输出为“2016年7月2日00:12:00和2016年7月2日00:14:00”,因为2737778介于2737775和2738011之间。我可以在awk中执行此操作吗?是否可以将当前行中的数字与下一行进行比较?

2 个答案:

答案 0 :(得分:2)

另一个类似的awk

awk -v n=2737778 'n<=$NF{if(p) print p; print; exit} {p=$0}' file

02 Jul 2016 00:12:00 2737775
02 Jul 2016 00:14:00 2738011

答案 1 :(得分:1)

是的,可以在awk中提前阅读,请参阅Peek at next line, but don't consume it。这是另一种方法。

awk '{ if (NR == 1) { save = $0; prtsw = 1 }
       else if (prtsw == 1 && 2737778 < $5) {
                print save
                print $0
                prtsw = 0
            }
            else { save = $0 }
    }' abetween.txt