如何在单行中获取jq的输出?

时间:2017-05-23 11:41:32

标签: amazon-ec2 jq

我使用jq和aws cli来打印实例。 例如: 检索实例列表

app.ActiveDocument.RunAutoMacro(WdAutoMacros.wdAutoOpen);

Jq打印实例id:

aws ec2 describe-instances --filters "Name=tag:bld_env,Values=test" --output json > all-inst.json

Jq的输出:

jq -r '.Reservations[].Instances[].InstanceId' all-inst.json

我想将它们打印成这样的一行:

 i-09e0d805cc 
 i-091a61038 
 i-07d3022
 i-0428ac7c4c
 i-970dc5c4d99 
 i-014c4ea
 i-0ac924df
 i-031f6 and so on..

2 个答案:

答案 0 :(得分:3)

角括号字符真的存在吗?否则你只需tr '\n' ','

答案 1 :(得分:0)

以下是一些仅限jq的方法。

通常最简单的就是加入"这些行(例如使用join(","))。这通常使用-r命令行选项完成。

如果这样做不切实际或效率低下,可以使用--join(或-j)命令行选项。以下是使用此方法的两个插图。在两个示例中,输出都不包含换行符。

使用终止逗号

jq -n -j 'range(0;5) | "\(.),"'

没有终止逗号

oneline.jq:

def oneline(f):
  foreach f as $i (null;
    if . == null then "\($i)" else ",\($i)" end;
    .);

oneline( range(0;5) )

调用:jq -n -j -f oneline.jq

输出:

0,1,2,3,4