如何使用Shell脚本在日期模式之前断行?

时间:2015-04-09 19:50:08

标签: java linux shell awk sed

我有一个像这样的文本文件:

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,等等...

感谢。

2 个答案:

答案 0 :(得分: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,因为搜索正则表达式包含斜杠。

答案 1 :(得分:2)

使用perl:

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

使用环视查找在不在行开头的日期之前查找地点,并在那里放置换行符。