Всех приветствую! Исходные данные:
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, недавно изучаю, но тут какой-то тупик. Подскажите пожалуйста решение по моему вопросу.