2016-03-17 27 views
-1
读线

我的文件包含了这样的数据:如何sequently用awk

Line1 2016-03-16 01:12:26 17.70500 83.26889 11.90 
Line2 2016-03-16 01:22:36 17.70500 83.26889 11.90 
Line3 2016-03-16 01:42:25 17.70500 83.26889 11.90 
Line4 2016-03-16 01:42:36 17.70500 83.26889 11.90 
Line5 2016-03-16 02:12:25 17.70500 83.26889 11.90 
Line6 2016-03-16 02:12:35 17.70500 83.26889 11.90 

我需要像一个时间比较行:

Line1 2016-03-16 01:12:26 17.70500 83.26889 11.90 
Line2 2016-03-16 01:22:36 17.70500 83.26889 11.90 

Line2 2016-03-16 01:12:26 17.70500 83.26889 11.90 
Line3 2016-03-16 01:22:36 17.70500 83.26889 11.90 

Line3 2016-03-16 01:12:26 17.70500 83.26889 11.90 
Line4 2016-03-16 01:22:36 17.70500 83.26889 11.90 

Line4 2016-03-16 01:12:26 17.70500 83.26889 11.90 
Line5 2016-03-16 01:22:36 17.70500 83.26889 11.90 
+0

预期产出是什么?需要比较完整的产品线还是只有一些领域? – Firefly

+0

在第二个数据块中,您的行是前两个的重复项。 – karakfa

回答

2

awk中,当然,已经顺序读取行没有任何额外的努力。对于这类问题,你要比较当前和以前行的信息,您可以使用模板,例如:

$ cat pcl.awk 
NR == 1 { prev_line = $0 } 

NR > 1 { 
    print "Previous: " prev_line 
    print "Current: " $0 
    print "(Comparison logic here)" 
    print "" 
    prev_line = $0; 
} 

$ awk -f pcl.awk pcl.txt 
Previous: Line1 2016-03-16 01:12:26 17.70500 83.26889 11.90 
Current: Line2 2016-03-16 01:22:36 17.70500 83.26889 11.90 
(Comparison logic here) 

Previous: Line2 2016-03-16 01:22:36 17.70500 83.26889 11.90 
Current: Line3 2016-03-16 01:42:25 17.70500 83.26889 11.90 
(Comparison logic here) 

Previous: Line3 2016-03-16 01:42:25 17.70500 83.26889 11.90 
Current: Line4 2016-03-16 01:42:36 17.70500 83.26889 11.90 
(Comparison logic here) 

Previous: Line4 2016-03-16 01:42:36 17.70500 83.26889 11.90 
Current: Line5 2016-03-16 02:12:25 17.70500 83.26889 11.90 
(Comparison logic here) 

Previous: Line5 2016-03-16 02:12:25 17.70500 83.26889 11.90 
Current: Line6 2016-03-16 02:12:35 17.70500 83.26889 11.90 
(Comparison logic here) 

根据手头问题的具体情况,您可能希望保存一个或更具体的字段,例如$3,而不是整行($0),但解决方案的一般形式或多或少是相同的。