Есть вопрос! — Помогите обработать лог: regexp, sed, возможно awk.
Привет.
Подскажите, как справиться с проблемой.
Есть лог такого вида с коммутаторов д-линк:
Как видите вывод этих железок содержит непечатные символы, что несколько усложняет работу с логом. Мне нужно, чтобы каждая строка начиналась с номера записи в логе (в куске, что я привел запси с 604 по 601) и тайм стампа, как и положено. Все портит многострочный вывод записей под номерами 603 и 604. По моей задумке нужно подобрать regexp, к строкам 8,9 и 11,12, чтобы потом можно было удалить все непечатные символы и объединить нужные строки.
Пока писал пост до меня дошло, как избавится от ^M, обрамляющего весь лог:
Подскажите, пожалуйста как объеденить нужные строки? Я пытался засунуть в регулярное выражения разнообразные отсутпы, табуляции и переносы кареток: \a, \f, \n, \r, \t, \v.
Написал это и до меня дошло, что это пустое пространство - это пробелы, которое я тупо убрал с помощью конструкции sed 's/ //':
А теперь осталось самое главное: как объединить нужные мне строки: 8 с 9 и 10, а 11 с 12 и 13 при условии, что таких строк в моем логе достаточно много?
P.S. Парадокс - вы еще ничего не ответили, а уже очень сильно помогли. Извиняюсь за поток сознания: бессоная ночь дает о себе знать.
Подскажите, как справиться с проблемой.
Есть лог такого вида с коммутаторов д-линк:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
kakaka@server ~ $ cat -v tmp | grep -A 12 -i "sh log" |
Как видите вывод этих железок содержит непечатные символы, что несколько усложняет работу с логом. Мне нужно, чтобы каждая строка начиналась с номера записи в логе (в куске, что я привел запси с 604 по 601) и тайм стампа, как и положено. Все портит многострочный вывод записей под номерами 603 и 604. По моей задумке нужно подобрать regexp, к строкам 8,9 и 11,12, чтобы потом можно было удалить все непечатные символы и объединить нужные строки.
Пока писал пост до меня дошло, как избавится от ^M, обрамляющего весь лог:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
kakaka@server ~ $ cat -v tmp | grep -A 12 -i "sh log" | sed 's/\^M//g' |
Подскажите, пожалуйста как объеденить нужные строки? Я пытался засунуть в регулярное выражения разнообразные отсутпы, табуляции и переносы кареток: \a, \f, \n, \r, \t, \v.
Написал это и до меня дошло, что это пустое пространство - это пробелы, которое я тупо убрал с помощью конструкции sed 's/ //':
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
kakaka@server ~ $ cat -v tmp | grep -A 12 -i "sh log" | sed 's/\^M//g' | sed 's/ //' |
А теперь осталось самое главное: как объединить нужные мне строки: 8 с 9 и 10, а 11 с 12 и 13 при условии, что таких строк в моем логе достаточно много?
P.S. Парадокс - вы еще ничего не ответили, а уже очень сильно помогли. Извиняюсь за поток сознания: бессоная ночь дает о себе знать.