【问题标题】:How to break the line before a date pattern using Shell script?如何使用 Shell 脚本在日期模式前换行?
【发布时间】:2015-04-09 19:50:07
【问题描述】:

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

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,随便...

谢谢。

【问题讨论】:

    标签: java linux shell awk sed


    【解决方案1】:

    使用 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'
      

      它使用环视来查找日期之前的位置,而不是在行首,并在那里放置一个换行符。

      【讨论】:

        猜你喜欢
        • 2019-05-16
        • 2011-11-22
        • 1970-01-01
        • 1970-01-01
        • 2011-10-22
        • 2020-06-17
        • 1970-01-01
        • 1970-01-01
        • 2022-10-17
        相关资源
        最近更新 更多