Всех приветствую!
Исходные данные:
1. 1Гб логов, расположенных в разных файлах
2. Блоки лога в файле имеют вид:
12:46-000012.TYPE,Message=«некое
событие записанное
в лог»
12:55-000128.TYPE,Message=«Что-то
случилось»

Нужно что бы было:
12:46-000012.TYPE,Message=«некое событие записанное в лог»
12:55-000128.TYPE,Message=«Что-то случилось»

Что пробовал:
find - получаю строки и передаю их в awk, где по регулярке вставлял символ '#' в начало каждой строки, затем tr удалял все \n, затем '#' менял '\n'.
Это все отрабатывает на маленьких объемах, но на больших нет и это понятно почему.

Вижу несколько вариантов решения:

1. когда считываем первый блок построчно, считывать до тех пор пока не встретится '12:55-000128' исключая эту подстроку

2. считать сразу блоком, где разделителем будет являться подстроки типа:'12:46-000012'.

3. gawk -F'-' '{if($1 ~ /#[0-9]+:[0-9]+-/) print «\n»; убратьВсеПереводыСтроки}'

awk, sed, недавно изучаю, но тут какой-то тупик. Подскажите пожалуйста решение по моему вопросу.








 






URL записи