将JSON转换为TSV
给定这样的JSON文件将JSON转换为TSV,json,header,export-to-csv,jq,Json,Header,Export To Csv,Jq,给定这样的JSON文件 [ { "h1": "x1", "h2": "x2" }, { "h1": "y1", "h2": "y2" } ] 我使用以下jq代码将其提取为一个有头TSV。但是我需要指定两次标题名。有没有办法只指定一次标题名?谢谢 [ "h1" , "h2" ], (.[] | [ .h1 , .h2 ]) | @tsv 下面是一个相对健壮的jq脚本,用于使用第一个对象中的键名打印带有标题的TSV
[
{
"h1": "x1",
"h2": "x2"
},
{
"h1": "y1",
"h2": "y2"
}
]
我使用以下jq代码将其提取为一个有头TSV。但是我需要指定两次标题名。有没有办法只指定一次标题名?谢谢
[
"h1"
, "h2"
], (.[] | [
.h1
, .h2
]) | @tsv
下面是一个相对健壮的jq脚本,用于使用第一个对象中的键名打印带有标题的TSV:
(.[0] | keys_unsorted) as $keys
| $keys, (.[] | [.[$keys[]]])
| @tsv
当然,这采用了-r命令行选项。这里有一个相对健壮的jq脚本,用于使用第一个对象中的键名打印带有标题的TSV:
(.[0] | keys_unsorted) as $keys
| $keys, (.[] | [.[$keys[]]])
| @tsv
当然,这采用了-r命令行选项。如果您的所有对象始终具有这两个键而没有其他键,那么您甚至不需要指定一次标题:
[[0]|keys[]],[]| map(values)|@tsv
将用于强调不同需求的各种方法,请参见@Aaron-以这种方式使用值,在这种情况下使用值是自找麻烦的。@peak我希望它能以类似于键的方式工作,当我看到它与示例一样工作时,我就这样做了。我现在知道它会忽略null
值,但是还有其他问题吗?null
的可能出现是我想到的主要问题。如果所有对象总是有这两个键而没有其他键,那么您甚至不需要指定一次标题:[[0]|键[],[]|映射(值)|@tsv
将要了解各种突出不同需求的方法,请参阅@Aaron-以这种方式使用值,在这种情况下是自找麻烦的。@peak我希望它能以类似于键的方式工作,当我看到它与示例一样工作时,我就使用了它。我现在看到它会忽略null
值,但是还有其他问题吗?可能出现的null
是我想到的主要问题。如果我想指定键,因为默认顺序可能无法满足我的需要,并且不应该打印json文件中的所有字段,该怎么办。@user1424739-您可以通过更改解决方案,例如,[“x”、“y”、“z”]作为$keys
。如果我想将这些键指定为默认顺序,可能无法满足我的需要,也不应该打印json文件中的所有字段。@user1424739-您可以通过更改解决方案中的第一行来指定所需的键,例如,[“x”、“y”、“z”]作为$keys
。