2014-02-08 174 views
3

多字符分隔符我有一個​​文本文件,其中數據的形式爲:
使用bash腳本

Number of Iterations: 150 
Average time is 45 ms 
Average time for collisions is 50 ms 
Total time is 95 ms 
.... 

有這種多個文件。我要讀所有這些文件並做出csv文件將包含以下形式的條目:其中每行對應一個txt文件

150,45,50,95 
200,40,60,100 
... 
... 


我正在寫一個bash腳本來從這個數據生成CSV文件。
我想只讀取文本文件中的數字。
對於第一線我試圖使用

IFS =": " read w1 w2 

但是它通過與沿着利用空間也作爲分隔符分割線「:」
當我使用

IFS=":" 

額外的空間被打印在我不想要的150前面。
我該怎麼做?
也在第二行我想用「is」作爲分隔符。它允許嗎?
感謝

+0

你可以發佈你的樣品輸入和預期的輸出更多的線路。 – anubhava

回答

0

您可以使用此AWK:

cat file 
Number of Iterations: 150 
Average time is 45 ms 
Average time for collisions is 50 ms 
Total time is 95 ms 
Number of Iterations: 200 
Average time is 40 ms 
Average time for collisions is 60 ms 
Total time is 100 ms 

awk '/^Total/{p=1} {gsub(/[^0-9]+/, ""); a[++i]=$0} 
    p{print a[1], a[2], a[3], a[4]; p=0; delete a; i=0}' OFS=, file 
150,45,50,95 
200,40,60,100