Определить устаревшие данные - PullRequest
0 голосов
/ 03 июня 2010

Скажите, у меня есть файл этого формата

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

Спасибо

Ответы [ 2 ]

1 голос
/ 03 июня 2010
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:

Нашел и исправил еще одну ошибку.

0 голосов
/ 04 июня 2010

Вот моя версия, которая более многословна:

# 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...