如何处理终端diffstat输出 提取133和85数值存入CSV文件两列
最优实现方案(Shell环境,直接终端执行)
用awk处理是最轻量高效的方案,不需要额外安装工具,直接适配diffstat的固定输出格式:
方案1:最简版(适配标准diffstat输出)
如果你的diffstat结果已经保存在diff_result.txt文件中,直接执行:
awk '/files changed/ {print $4","$6}' diff_result.txt > stats.csv
如果是从diff命令直接管道流处理,整条命令如下:
diff <旧文件目录> <新文件目录> | diffstat | awk '/files changed/ {print $4","$6}' > stats.csv
执行后生成的stats.csv文件内容就是133,85,正好对应插入数、删除数两列。
方案2:加强版(兼容性更高,避免字段偏移)
如果担心diffstat输出格式微调导致字段序号变化,可以用正则精准匹配数值,更稳定:
awk ' # 可选:添加CSV表头 BEGIN {print "insertions,deletions"} /files changed/ { match($0, /([0-9]+) insertions\(\+\), ([0-9]+) deletions\(-\)/, res) print res[1]","res[2] } ' diff_result.txt > stats.csv
生成的CSV自带表头,直接用表格工具打开就能正常识别两列数据。
内容的提问来源于stack exchange,提问作者nerd_gram
相关产品推荐
相关产品推荐

