2010-06-03 80 views
0

说我有这种格式确定陈旧数据

12:04:21 .3 
12:10:21 1.3 
12:13:21 1.4 
12:14:21 1.3 
..and so on 

我想,比如说,10个因之时间戳第二栏找到重复号的文件,从而找到的陈旧。

12:04:21 .3 
12:10:21 1.3 
12:14:21 1.3 
12:10:21 1.3 
12:14:21 1.3 
12:12:21 1.3 
12:24:21 1.3 
12:30:21 1.3 
12:44:21 1.3 
12:50:21 1.3 
13:04:21 1.3 
13:24:21 1.7 

应打印12点10分21秒至13时04分21秒1.3

,我想输出的开始和结束,并在陈旧的时间戳范围的

有人可以帮助我想出来吗?

您可以用awk,bash的

感谢

+1

-1在哪里的问题? SO不适合发布编程任务。 – sleske 2010-06-03 19:29:48

+0

我同意@sleske – lewiguez 2010-06-03 19:34:18

回答

1
awk 'BEGIN { count = 1} { if ($2 == prev) { ++count; if (! start) {start = prevtime} end = $1 } 
     else if (count >= 10) { print start, end, prev; count = 1; start = "" } 
     else { start = "" }; 
     prev = $2; prevtime = $1 }' file.dat 

编辑2:

找到并修复另一个bug。

+0

不适用于每列的打印 – vehomzzz 2010-06-03 20:40:31

+0

@Andrei:我不明白你的意思。你的意思是“每一行”?无论如何,我发现了一个错误并修复了它。尝试编辑的版本。 – 2010-06-03 23:38:47

0

这里是我的版本,这是更详细:

# This function prints out the summary only when count >= 10 
function print_summary(count, first, last, value) { 
    if (count >= 10) { 
     printf "%s through %s %s (%d)\n", first, last, last_value, count 
    } 
} 

$2 == last_value { 
    last_occurance = $1 
    count++ 
} 

$2 != last_value { 
    print_summary(count, first_occurance, last_occurance, last_value) 
    first_occurance = $1 
    last_value = $2 
    count = 1 
} 

END { 
    print_summary(count, first_occurance, last_occurance, last_value) 
} 
相关问题