Как разбить строку перед шаблоном даты, используя скрипт Shell?

1

У меня есть текстовый файл:

13/03/2015 09:21:02 Descrição de log (Sessão terminada);name.lastname -- 127.0.0.1:66666 -> 0.0.0.0 -- 00:01 -- 13/03/2015 09:21:02 Descrição de log (Autenticação realizada com sucesso);name.lastname.....

Я хотел бы знать, как я могу сломать линию каждый раз, когда у меня есть дата. Модель будет равна dd/mm/yyyy. Таким образом, текст, наконец, будет выглядеть следующим образом:

13/03/2015 09:21:02 Descrição de log (Sessão terminada);name.lastname -- 127.0.0.1:66666 -> 0.0.0.0 -- 00:01 --             
13/03/2015 09:21:02 Descrição de log (Autenticação realizada com sucesso);name.lastname.....

Может ли кто-нибудь помочь мне с этим? Может быть java-код, sed, awk, что угодно...

Благодарю.

Теги:
awk
sed

2 ответа

4

С GNU sed:

sed -r 's, ([0-9]{2}/[0-9]{2}/[0-9]{4} ),\n\1,g' filename

Часть [0-9]{2}/[0-9]{2}/[0-9]{4} регулярного выражения соответствует шаблону даты; все регулярное выражение совпадает с ним, окруженное пробелами, чтобы избежать ложных срабатываний, и потому, что ваши данные примера показывают, что вход соответствует этому формату. , используется как разделитель вместо / в команде s потому что регулярное выражение поиска содержит косые черты.

2

С perl:

perl -pe 's{(?<=.)(?=\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2})}{\n}g'

Это использует look-arounds, чтобы найти место перед датой, которая не находится в начале строки, и помещает туда новую строку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню