2017-03-08 36 views
0

我有很长的字符串,我需要在时间戳的每个实例之前放置一个换行符。Sed脚本需要在每个时间匹配之前在一个大的单个字符串中插入LF

03:38:11,03/07/2017,node,cpu,user,sys,idle,intr/s,ctxt/s,0,0,0,9,91,0,1,0,24,75,0,total,0,17,83,2370,3574,1,0,3,4, 
93,1,1,10,4,86,1,total,7,4,89,2922,4653,03:39:11,03/07/2017,node,cpu,user,sys,idle,intr/s,ctxt/s,0,0,4,25,71,0,1,5 
,16,79,0,total,4,21,75,2487,3876,1,0,0,3,97,1,1,1,1,98,1,total,1,2,98,2880,4728,03:40:11,03/07/2017,node,cpu,user, 
sys,idle,intr/s,ctxt/s,0,0,1,30,69,0,1,1,30,69,0,total,1,30,69,3237,4344,1,0,3,49,47,1,1,10,47,43,1,total,6,48,45, 
3920,5702, 

我需要看到格式化它是这样:

03:38:11,03/07/2017,node,cpu,user,sys,idle,intr/s,ctxt/s,0,0,0,9,91,0,1,0,24,75,0,total,0,17,83,2370,3574,1,0,3,4,93,1,1,10,4,86,1,total,7,4,89,2922,4653, 

03:39:11,03/07/2017,node,cpu,user,sys,idle,intr/s,ctxt/s,0,0,4,25,71,0,1,5,16,79,0,total,4,21,75,2487,3876,1,0,0,3,97,1,1,1,1,98,1,total,1,2,98,2880,4728, 

03:40:11,03/07/2017,node,cpu,user,sys,idle,intr/s,ctxt/s,0,0,1,30,69,0,1,1,30,69,0,total,1,30,69,3237,4344,1,0,3,49,47,1,1,10,47,43,1,total,6,48,45,3920,5702, 

我目前正在使用下列内容:

sed -e 's/^[[:digit:]][[:digit:]]\:[[:digit:]][[:digit:]]/\n&/g' cpu.log 
+0

我也应该注意到,它确实在第一场比赛中放了一个LF,但是没有后续的比赛。 –

+1

'sed -E's /,([[:digit:]] [[:digit:]]:)/,\ n \ 1/g'cpu.log'可能是 –

回答

0

^线锚杆力sed只匹配第一张日期戳。删除它,你应该没问题。

避免第一次翻身,也许按摩脚本以在比赛前需要一些东西(根据您的样本数据对逗号进行硬编码似乎有效);或者只是后处理输出以删除第一个换行符。

0
sed 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/\n&/g' 
相关问题