将json-lines转换为tsv,为每个数组项生成单独的行

u2nhd7ah  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(106)

我有下面的输入文件

["alice", ["foo", "bar", "baz"]]
["bob", ["qux", "quux"]]
⋮

我想把它转换成一个制表符分隔的文件,看起来像下面这样(注意缺少引号)

alice   foo
alice   bar
alice   baz
bob     qux
bob     quux
⋮

所有的数组元素都保证是字符串(没有空值)。你能帮我写一个jq脚本来实现这个吗?

vuktfyat

vuktfyat1#

last项(或.[1]项)替换为它自己的每一项(.[]),然后使用@tsv将所有项转换为制表符分隔的值:

jq -r 'last = last[] | @tsv' input.json
alice   foo
alice   bar
alice   baz
bob qux
bob quux

Demo

blmhpbnm

blmhpbnm2#

这里有另一种方法,将第一个元素放入数组中,然后使用内置的combinations

jq --raw-output '.[0]=[.[0]] | combinations | @tsv' input.json

jqplay.org上试试。

相关问题