在 bash 脚本中使用多字符分隔符



我有一个文本文件,其中数据的形式是:

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

相关内容

  • 没有找到相关文章

最新更新