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

如何从JSON文件提取id与username并生成逗号分隔列文件

提取JSON中id与username字段的单命令实现方案

问题背景

你手头有一份包含多条JSON对象的文件(示例结构如下),需要提取每条对象里的id和username字段,生成username,id格式的内容写入新文件:

{ "href": "/users/115", "id": 115, "username": "test", "locked": false, "type": "local", "effective_groups": [] }

之前尝试用sed搭配grep只能提取单个字段,想要一个能一步到位的单命令解决方案。

最佳解决方案:使用jq工具

jq是专门处理JSON数据的命令行工具,比sed/grep更可靠,能完美适配JSON的各种格式变化(比如字段顺序调整、空格增减),是处理JSON场景的首选工具。

命令示例

jq -r '"(.username),(.id)"' user_id_json.txt > output.txt

命令细节解释

  • -r:参数表示输出原始字符串(去掉JSON默认的字符串引号,符合你要的纯文本格式)
  • "(.username),(.id)":jq的格式化表达式,把提取到的username和id字段按用户名,ID的格式拼接输出
  • user_id_json.txt:替换成你的输入JSON文件路径
  • > output.txt:将最终结果写入指定的新文件

如果你的JSON是数组格式(比如[{...}, {...}, {...}]),可以用下面的命令遍历所有对象:

jq -r '.[] | "(.username),(.id)"' user_id_json.txt > output.txt

备用方案:sed+正则组合(适合无jq的环境)

如果服务器上没法安装jq,可以用文本处理工具组合实现,但注意这种方式依赖JSON的固定格式(比如字段顺序、引号和空格的排版),通用性稍弱:

sed -E 's/.*"username": "([^"]+)".*"id": ([0-9]+).*/\1,\2/' user_id_json.txt > output.txt

这个命令通过正则匹配,精准提取username的字符串内容和id的数字内容,再替换成用户名,ID的格式输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:42:59