Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
awk:检查一个数字是否在两个数字之间_Awk_Gawk - Fatal编程技术网

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

awk:检查一个数字是否在两个数字之间,awk,gawk,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

我有一个以下格式的文件

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做这个吗?是否可以将当前行中的数字与下一行中的数字进行比较?

是的,可以在awk中提前读取,请参阅。这里有另一种方法

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

是的,可以用awk进行预读,请参阅。这里有另一种方法

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
另一个类似的awk

另一个类似的awk


谢谢,这很有帮助。但问题是,尽管数字的顺序越来越高,但一周后就会重置。所以我担心会有一个角落的情况。我们是否可以检查数字是否介于两者之间,而不只是检查脚本在对文件进行排序时所做的操作。测试角落案例,有两个。谢谢你的帮助。但问题是,尽管数字的顺序越来越高,但一周后就会重置。所以我担心会有一个角落的情况。我们是否可以检查数字是否介于两者之间,而不只是检查脚本在对文件进行排序时所做的操作。测试角落案例,有两个。