2017-07-26 35 views
0

我有一個包含我的日誌信息爲文件:如何分割文本的長字符串使用bash

Sat May 20 00:34:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers Sat May 20 00:35:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers Sat May 20 00:36:04 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 

我想,所以它看起來像這樣拆分此日誌數據轉換線:

Sat May 20 00:34:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 
Sat May 20 00:35:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 
Sat May 20 00:36:04 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 

任何想法?

+0

是否有任何隱藏線「容器」後壞? – ideaboxer

+0

不是。它只是容器之間的空間,下一個時間戳 –

回答

0

嘗試:

perl -i.bkp -pe 's/containers/containers\n/' file.log 

這個假定字containers是應該是什麼在每行

+0

這是正確的,已經修復。 – downtheroad

1

結束使用sed

$ sed 's/containers */containers\n/g' file 
Sat May 20 00:34:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 
Sat May 20 00:35:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 
Sat May 20 00:36:04 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 

或:

$ sed 's/\(containers\) */\1\n/g' file 
+0

完全爲我工作。非常感謝 –

0

你可以閱讀整個文件到一個猛砸變量和使用參數擴展containers通過換行後更換空間:

text=$(< infile) 
echo "${text//containers /containers$'\n'}"