我有一个文本文件,其中数据的形式是:
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"作为分隔符。允许吗?
谢谢
你可以使用这个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