这包含文件中的以下信息。
17:06:31.301 [blabal] DEBUG blablabla1
17:06:31.302 [blabal] DEBUG blablabla2
17:06:31.303 [blabal] DEBUG blablabla3
获取该文件cat的内容,想知道我是否想将其更改为json格式。
[{"time" : "17:06:31.301", "log" : "[blabal] DEBUG blablabla1"}
{"time" : "17:06:31.302", "log" : "[blabal] DEBUG blablabla2"}
{"time" : "17:06:31.303", "log" : "[blabal] DEBUG blablabla3"}]
这样可以吗?
答案 0 :(得分:0)
$ sed -r 's/^([^ ]+) (.*)/{"time" : "\1", "log" : "\2"}/; 1s/^/[/; $s/$/]/' file
[{"time" : "17:06:31.301", "log" : "[blabal] DEBUG blablabla1"}
{"time" : "17:06:31.302", "log" : "[blabal] DEBUG blablabla2"}
{"time" : "17:06:31.303", "log" : "[blabal] DEBUG blablabla3"}]
sed -r
使用扩展正则表达式启动sed
。对于BSD sed,请使用-E
代替-r
。
s/^([^ ]+) (.*)/{"time" : "\1", "log" : "\2"}/
将该行划分为第一个单词,表示为\1
,其余全部用\2
表示,然后将其放入json格式。
1 s/^/[/
在第一行,使用左方括号[
添加所有内容。
$ s/$/]/
在最后一行(标记为$
)上,找到该行的末尾,也用$
表示,然后在其中放置一个右方括号]
。