На этот вопрос уже есть ответ:
В bash я пытаюсь прочитать файл журнала и буду печатать только те строки, которые имеют временную метку между двумя определенными моментами времени. Формат времени - чч: мм: сс. Например, я бы искал строки, которые упали бы между 12:52:33 до 12:59:33.
Я хочу использовать регулярное выражение, потому что я могу использовать его в функции grep
.
Каждая строка журнала начинается с some_nr 2014-05-15 21:58:00,000000 rest_of_line
.
Мое решение дает мне строки с полем в 1 мин. Я вырезал ss
и беру все строки с hh:mm:[0-9]{2}
. $ 2 имеет формат filename_hh:mm:;
, например: "24249_16:05:;24249_16:05:;24249_16:07:;24249_16:07:;24249_16:08:"
Мой код:
B=$2
for line in ${B//;/ } ;
do
TENT=`echo $line | awk '{split([110],numbers,"_"); print numbers[1]}'`"_logs.txt"
TIME=`echo $line | awk '{split([110],numbers,"_"); print numbers[2]}'`"[0-9]{2}"
grep -iE ${TIME} ${TENT} >> ${FILE1}
done
Мне нужно решение с полем в 15 секунд для любого времени, а не 60. Я хочу, чтобы вход в отформатируйте filename_hh:mm:ss
и возьмите строки для чч: мм: сс +/- 15 с или filename_hh:mm:ss(1)_hh:mm:ss(2)
и возьмите строки между чч: мм: сс (1) и чч: мм: сс (2). В течение некоторого времени нет линий, поэтому решение должно «распознать», если иногда совпадает введенный интервал или нет.
Файлы журналов выглядят так:
1002143 1002143 2014/15/05 22:09:52.937004 bla
1002130 2014/15/05 22:09:44.786002 bla bla
1001667 2014/15/05 22:09:44.592009 bl a bla
1001667 1001667 2014/15/05 22:09:44.592009 bl a bla