arrays - 使用 jq 将带有数组的 tsv 转换为 JSON

标签 arrays json bash csv jq

我找到了 jq非常有助于将 tsv 转换为 JSON 文件,但是,我想弄清楚当我的 tsv 中有数组时如何使用 jq 执行此操作:

name    age    pets
Tim    15    cats,dogs
Joe    11    rabbits,birds
...

理想的 JSON:

[
 {
  name: "Tim",
  age: "15",
  pet:["cats","dogs"]
 },
  name: "Joe",
  age: "11",
  pet:["rabbits","birds"]
 }, ...
]

这是我试过的命令:

cat file.tsv | jq -s  --slurp --raw-input --raw-output 'split("\n") | .[1:-1] | map(split("\t")) |
        map({"name": .[0],
             "age": .[1],
             "pet": .[2]})'

上述命令的输出是:

[
 {
  name: "Tim",
  age: "15",
  pet:"cats,dogs"
 },
  name: "Joe",
  age: "11",
  pet:"rabbits,birds"-
 }, ...
]

最佳答案

像这样:

jq -rRs 'split("\n")[1:-1] |
         map([split("\t")[]|split(",")] | {
                 "name":.[0],
                 "age":.[1],
                 "pet":.[2]
             }
    )' input.tsv

关于arrays - 使用 jq 将带有数组的 tsv 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51929141/

相关文章:

java - 如何将数组链接到方法

php - MySQL基于PHP数组的最低值更新

json - Kotlinx 序列化 : How to circumvent reified typeargs for deserialization?

bash - 在 Bash 的单行命令中定义变量

mysql - 内爆日期数组并插入 MySQL 数据库

arrays - 如何从多维数组计算一维索引?例如二维到一维 : y * xTot + x = i. 但更大

json - 使用 JSON.parse 解析 OpenStruct 或哈希

javascript - 迭代 django 模板中的 json 元素

linux - 从文件 bash shell 脚本中获取数据

macos - 在命令行中编辑 ipa plist 文件