2017-03-08 42 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' 
相關問題