[英]JQ Add (static) header before filter
考虑以下(简化的)JSON:
[
{
"type": "foo",
"name": "test_1"
},
{
"type": "bar",
"name": "test_2"
},
{
"type": "bar",
"name": "test_3"
}
]
我正在使用以下过滤器来生成我的 output:
group_by(.type)[][] | "\(if "type" == "foo" then "oof" else "rab" end)&\(.name)"
这产生
rab&test_2
rab&test_3
rab&test_1
使用column -ts '&'
这将转换为:
rab test_2
rab test_3
rab test_1
我的问题; 我需要添加一个自定义的 header 行,这样 output 就变成了:
test&foo&bar
rab&test_2
rab&test_3
rab&test_1
如何添加(静态)一组 header 行有很多问题,例如:
但我无法组合它,所以我可以保持group_by
完整并让column
处理间距
(我宁愿让column
处理间距)
tl;博士;
如何添加自定义 header 数组,例如:
[ "test", "foo", "bar" ] | join("&")
以便
group_by
及其背后的一切都没有改变column
可以解析output 编辑,当然我可以从jq
命令中删除column
,然后像这样“滥用” echo
显:
ugly=$(curl --silent <URI> \
| jq -r 'group_by(.type)[][] | "\(if "type" == "foo" then "oof" else "rab" end)&\(.name)"' \
| egrep --color -E "FooBar|$")
headers="foo#bar#foorbar"
echo "$headers\n$ugly" | column -ts '#' \
但我宁愿保留| column
jq
部分上的| column
,这样就不需要echo
和$ugly
。
将您的表达式括在括号中并添加| ["test&foo&bar"] +. |.[]
| ["test&foo&bar"] +. |.[]
| ["test&foo&bar"] +. |.[]
结尾。
[group_by(.type)[][] | "\(if "type" == "foo" then "oof" else "rab" end)&\(.name)"] | ["test&foo&bar"] + . | .[]
不确定为什么需要columns
。 似乎您可以将&
替换为\t
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.