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

如何用Shell脚本将文本文件转换为JSON文件?

需求描述

我有一个名为myfile.txt的文件,内容如下:

GYFUFGYO1  KMP-app   james@qt.com  CODE_SMELL
GYFUFGYO2  KMP-app   james@qt.com  CODE_SMELL
GYFUFGYG3  AFP-Login   nathan@qt.com  BUG
GYFUFGYG4  AFP-Login   nathan@qt.com  BUG
GYFUFGYO5  KMP-app   james@qt.com  CODE_SMELL
GYFUFGYO6  KMP-app   james@qt.com  CODE_SMELL

需要将该文本转换为myfile.json,预期输出格式如下:

[
{"ApplicationName":"KMP-app","BuildBreakReason":"CODE_SMELL","DefectAuthor": "james@qt.com"},
{"ApplicationName":"KMP-app","BuildBreakReason":"CODE_SMELL","DefectAuthor": "james@qt.com"},
{"ApplicationName":"AFP-Login","BuildBreakReason":"BUG","DefectAuthor": "nathan@qt.com"},
{"ApplicationName":"AFP-Login","BuildBreakReason":"BUG","DefectAuthor": "nathan@qt.com"},
{"ApplicationName":"KMP-app","BuildBreakReason":"CODE_SMELL","DefectAuthor": "james@qt.com"},
{"ApplicationName":"KMP-app","BuildBreakReason":"CODE_SMELL","DefectAuthor": "james@qt.com"}
]

之前尝试用硬编码方式写JSON被禁止,希望通过循环读取myfile.txt的列值,动态生成目标JSON文件。

解决方案

方法1:纯Bash循环实现

创建textconvert.sh脚本,内容如下:

#!/bin/bash

# 初始化JSON文件,写入数组开头
echo "[" > myfile.json

line_count=0
# 逐行读取文件,忽略第一列内容
while read -r _ app author reason; do
    # 跳过空行
    [[ -z "$app" ]] && continue

    # 非首行添加逗号分隔符
    if (( line_count > 0 )); then
        echo "," >> myfile.json
    fi

    # 生成JSON对象并写入文件
    echo "{\"ApplicationName\":\"$app\",\"BuildBreakReason\":\"$reason\",\"DefectAuthor\": \"$author\"}" >> myfile.json

    ((line_count++))
done < myfile.txt

# 写入数组结尾
echo "]" >> myfile.json

执行步骤:

  • 给脚本添加执行权限:chmod +x textconvert.sh
  • 运行脚本:./textconvert.sh

方法2:使用jq工具(更简洁可靠)

如果系统已安装jq,可以用一行命令完成转换,无需手动循环:

jq -R 'split(/\s+/) | {ApplicationName: .[1], BuildBreakReason: .[3], DefectAuthor: .[2]}' myfile.txt | jq -s . > myfile.json

命令说明:

  • -R:将输入内容视为原始字符串处理
  • split(/\s+/):按任意空白字符分割每行内容为数组
  • 按需求映射为指定字段的JSON对象
  • -s .:将所有单个JSON对象合并为一个数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:27:48