我正在处理一些在linux上用log4j创建的配置单元日志。使用的正则表达式是
(%d{ISO8601} %-5p [%t]: %c{2} (%F:%M(%L)) - %m%n)
. 我意识到有些线条被分成了好几行。例如
2017-02-10 10:03:29,933 INFO [main]: parse.ParseDriver (ParseDriver.java:parse(185)) - Parsing command:
create table my_table
(std_id STRING, std_number STRING)
2017-02-10 10:03:31,296 INFO [main]: parse.ParseDriver (ParseDriver.java:parse(209)) - Parse Completed
在linux中有没有一个命令,我可以用它来组合虚线,得到这样的输出;
2017-02-10 10:03:29,933 INFO [main]: parse.ParseDriver (ParseDriver.java:parse(185)) - Parsing command: create table my_table (std_id STRING, std_number STRING)
2017-02-10 10:03:31,296 INFO [main]: parse.ParseDriver (ParseDriver.java:parse(209)) - Parse Completed
1条答案
按热度按时间wyyhbhjk1#
这应该管用。
解释
让
/^.{4}-.{2}-.{2} .{2}:.{2}:.{2},.{3} [A-Z]+
是表示新日志记录的模式,例如。2017-03-17 03:20:19,372 WARN
第一-e
当当前行指示新的日志记录时x
:交换模式空间(保存当前行)和保留空间的内容。1!{s/\n/ /g;p}
:如果这不是文件的第一行,(在模式空间内),请用空格替换新行并打印它${g;p}
如果这是文件的最后一行,请从保留空间获取并打印它d
:删除图案空间并开始新的循环(忽略以下命令)第二
-e
“h”:将模式空间附加到保留空间(仅当没有新的日志记录时)第三
-e
如果这是文件的最后一行($
)而不是新的日志记录g
:用保留空间的内容覆盖图案空间s/\n/ /g;p
:用空格替换新行并打印演示