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

如何使用Shell命令将冒号分隔的test.txt转换为指定CSV格式

你之前用tr ": " '\n'达不到预期是因为tr会逐一匹配字符集中的单个字符做替换,会把所有冒号、所有空格都替换为换行,自然会出现每个元素单独换行的结果。

方案1:awk 实现(适配任意行数的键值对格式,通用性最强)

直接执行以下命令即可得到目标输出:

awk -F': ' '{keys[NR]=$1; values[NR]=$2} END {
    for(i=1;i<=NR;i++) printf "%s%s", keys[i], i==NR ? "\n" : ","
    for(i=1;i<=NR;i++) printf "%s%s", values[i], i==NR ? "\n" : ","
}' test.txt

逻辑说明:

  • -F': ' 指定每行的分隔符为冒号加空格,正好匹配你文件里的键值分隔规则
  • 遍历每行时把冒号前的键存入keys数组,冒号后的值存入values数组,NR为当前处理的行号
  • 所有行处理完成后,先拼接所有键输出为表头行,再拼接所有值输出为数据行,元素之间用逗号分隔

方案2:cut + paste 组合(适合快速处理简单场景)

如果不想写复杂的awk逻辑,也可以用基础文本处理工具组合实现:

# 提取所有键拼接为表头行
keys=$(cut -d':' -f1 test.txt | paste -sd, -)
# 提取所有值(去掉冒号后的空格)拼接为数据行
values=$(cut -d' ' -f2 test.txt | paste -sd, -)
# 输出最终结果
echo -e "$keys\n$values"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:09:04