You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中将磁盘I/O性能输出重定向为CSV文件

我来帮你搞定这个转换需求!你的原始输出是单行包含三个测试结果,我们需要把它拆成CSV的三条记录,对应每个测试类型。这里有个用awk实现的方案,简单高效,能直接处理你的输入文本并生成符合要求的CSV:

转换脚本

awk '
# 先输出CSV表头
BEGIN {
    print "Date-time,Filename (being tested),Filesize,Test type,Speed"
}
# 处理每一行输入
{
    # 提取固定位置的基础字段
    datetime = $1
    filesize = $3 $4  # 拼接数值和单位(比如250+KB)
    filename = $6     # dir后面的测试文件路径

    # 处理WRITE TEST记录
    write_test = "WRITE TEST"
    write_speed = $9 $10
    print datetime "," filename "," filesize "," write_test "," write_speed

    # 处理READ TEST (W/O CACHE)记录
    read_nocache_test = "READ TEST (W/O CACHE)"
    read_nocache_speed = $14 $15
    print datetime "," filename "," filesize "," read_nocache_test "," read_nocache_speed

    # 处理READ TEST (WITH CACHE)记录
    read_cache_test = "READ TEST (WITH CACHE)"
    read_cache_speed = $19 $20
    print datetime "," filename "," filesize "," read_cache_test "," read_cache_speed
}' input.txt > output.csv

脚本说明

  1. BEGIN块:先输出指定的CSV表头,确保第一行是要求的列名。
  2. 字段提取:根据你给出的输出格式,固定提取对应位置的字段:
    • $1 是时间戳(Date-time)
    • $3$4 拼接文件大小的数值和单位(比如250KB)
    • $6 是测试文件的路径(Filename)
  3. 拆分测试记录:把单行里的三个测试结果拆成三条独立的CSV行,分别对应不同的测试类型和速度值。

示例输出

运行脚本后,output.csv的内容会是:

Date-time,Filename (being tested),Filesize,Test type,Speed
2018-04-18-12-09-32,/opt/testfile,250KB,WRITE TEST,116 MB/s
2018-04-18-12-09-32,/opt/testfile,250KB,READ TEST (W/O CACHE),350 MB/s
2018-04-18-12-09-32,/opt/testfile,250KB,READ TEST (WITH CACHE),657 MB/s

如果后续你的原始输出格式有微小调整(比如文件大小单位变化、字段位置偏移),只需要修改脚本里对应的$N数值即可。

内容的提问来源于stack exchange,提问作者Nirbhay Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:49:45