Unix环境下如何将命令输出写入CSV文件的指定列
你可以将原脚本中处理input.csv的sed命令替换为字段重排逻辑即可实现需求,调整后的完整脚本如下:
#!/bin/bash # 可选:执行前清空原有file.csv,避免多次运行重复追加内容 > file.csv echo -e "Value,1\nCount,1" >> file.csv echo "Header1,Header2,Path,Header4,Value,Header6" >> file.csv # 重排input.csv的字段到指定列 awk '{print ",," $2 ",," $1 ","}' input.csv >> file.csv
逻辑说明
input.csv每行默认按空格分割为两个字段:$1是数值串,$2是路径。输出时按照6列CSV的规则拼接:
- 前两列留空:以
,,开头 - 第3列填入路径
$2 - 第4列留空:加
,, - 第5列填入数值串
$1 - 第6列留空:末尾补
,
如果你的路径可能包含空格,可使用适配版awk逻辑,避免路径被错误拆分:
awk '{val=$1; sub(/^[^ ]+ /,""); path=$0; print ",," path ",," val ","}' input.csv >> file.csv
你也可以用sed实现同样效果,把原sed行替换为以下内容即可:
sed 's/\([^ ]*\) \(.*\)/,,\2,,\1,/' input.csv >> file.csv
内容的提问来源于stack exchange,提问作者Helium
相关产品推荐
相关产品推荐

