我找到了 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/