我有一个文本文件,其中的数据格式为:
Number of Iterations: 150
Average time is 45 ms
Average time for collisions is 50 ms
Total time is 95 ms
....
这种文件有多种。我必须阅读所有这些文件并制作一个csv文件,其中包含以下格式的条目:
150,45,50,95
200,40,60,100
...
...
其中每行对应一个txt文件 我正在编写一个bash脚本,用于根据此数据生成CSV文件 我想只读取文本文件中的数字 我尝试使用第一行
IFS =": " read w1 w2
但它通过使用空格作为分隔符和':'来分割线 我用的时候
IFS=":"
在150前面印有一个我不想要的额外空间。
我该怎么做呢?
另外在第二行我想用“is”作为分隔符。是否允许?
感谢
答案 0 :(得分: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