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

如何用jq从同一JSON查询中提取_id与Affiliation并生成CSV

合并jq查询生成包含_id和处理后Affiliation的CSV输出

问题说明

现有JSON数据结构如下:

{
  "_index": "indexeer",
  "_type": "_doc",
  "_id": "3233233233",
  "_score": 1,
  "_source": {
    "Bibtex": {
      "Article": {
        "AuthorList": [
          {
            "Affiliation": {
              "Affiliation": "Title content, Hematology and Hepatology Honorary Fellow, Honorary Member, American  Society. xxxyyy@hotmail.com."
            }
          }
        ]
      }
    }
  }
}

已经能单独提取处理后的Affiliation字段,以及单独提取_id字段,但需要把这两个结果合并,生成如下格式的CSV输出:

"3233233233", "Title content, Hematology and Hepatology Honorary Fellow, Honorary Member, American  Society"

解决命令

直接用一条jq命令就能完成,核心是先保存_id的值,再处理Affiliation,最后拼接成目标格式:

基础实现

jq -r '
  ._id as $id
  | ._source.Bibtex.Article.AuthorList[]?
  | .Affiliation.Affiliation | .[0:rindex(" Electronic address:")] as $affil
  | "\"\($id)\", \"\($affil)\""
' results.json

标准CSV格式(自动处理特殊字符)

如果Affiliation字段里可能包含双引号这类特殊字符,用@csv过滤器能自动转义,输出更标准的CSV:

jq -r '
  ._id as $id
  | ._source.Bibtex.Article.AuthorList[]?
  | .Affiliation.Affiliation | .[0:rindex(" Electronic address:")] as $affil
  | [$id, $affil] | @csv
' results.json

命令逻辑

  1. 先把当前数据的_id存入变量$id,避免遍历数组时丢失这个值;
  2. 遍历AuthorList数组中的每个作者条目;
  3. 提取并截取Affiliation字段的有效部分,存入$affil;
  4. 把两个变量组合成CSV格式的字符串输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:20:29