JQ字符串不能是CSV-Formatt
我正在使用AWS CMD AWS ELBV2 DIFDAC-LOAD-BALANCERS-OUTPUT JSON
检索有关我的负载平衡器的信息 - 下面
我使用以下来提取DNS名称,LB 的名称和方案
每个LB JQ -R'.loadBalancers [] | .dnsname,.loadBalancerName,.scheme'
每个数组上的JQ循环,我得到这样的列表
DNS-XXXXXXXXXXXXXXXXXXXXXXXX.elb.us-west-1.amazonaws.com
LBNAME-xxxxxxxxx
internal
DNS-XXXXXXXXXX.elb.us-west-1.amazonaws.com
LBNAME-XXXXXXXXXXXXXXXXXXXXXXXX
internal
:JQ中有没有办法将我的值作为CSV打印为CSV,或者至少在每次迭代后插入一个空间循环?如果我不能通过JQ做到这一点,那么实现这一目标的最佳方法是什么?
当我添加@csv时,我会得到以下错误“ string(” xxxx ...)无法csv-formattert,只有数组“
partial json
"LoadBalancers": [
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-1:XXXXXXXXXXXXXXXXXXXXXXXX,
"DNSName": "DNS-XXXXXXXXXXXXXXXXXXXXXXXX.elb.us-west-1.amazonaws.com",
"CanonicalHostedZoneId": "xxxxxxxxx",
"CreatedTime": "2021-10-24T07:37:29.568000+00:00",
"LoadBalancerName": "LBNAME-xxxxxxxxx",
"Scheme": "internal",
"VpcId": "vpc-XXXXXXXXXX",
"State": {
"Code": "active"
},
"Type": "network",
"AvailabilityZones": [
{
"ZoneName": "us-west-1a",
"SubnetId": "XXXXXXXXXX,
"LoadBalancerAddresses": []
},
{
"ZoneName": "us-west-1c",
"SubnetId": "XXXXXXXXXX",
"LoadBalancerAddresses": []
}
],
"IpAddressType": "ipv4"
},
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-1:XXXXXXXXXXXXXXXXXXXXXXXX,
"DNSName": "DNS-XXXXXXXXXX.elb.us-west-1.amazonaws.com",
"CanonicalHostedZoneId": "XXXXXXXXXX",
"CreatedTime": "2022-01-05T14:14:14.570000+00:00",
"LoadBalancerName": "LBNAME-XXXXXXXXXXXXXXXXXXXXXXXX",
"Scheme": "internal",
"VpcId": "vpc-XXXXXXXXXX",
"State": {
"Code": "active"
},
"Type": "network",
"AvailabilityZones": [
{
"ZoneName": "us-west-1c",
"SubnetId": "subnet-XXXXXXXXXX",
"LoadBalancerAddresses": []
},
{
"ZoneName": "us-west-1a",
"SubnetId": "subnet-ZZZZZZZ",
"LoadBalancerAddresses": []
}
],
"IpAddressType": "ipv4"
}
]
}
I am working with JSON output from the AWS cmd aws elbv2 describe-load-balancers --output json
to retrieve info about my Load Balancers - partial json below
I am using the following to extract DNS Name, LB Name and Scheme for each LB
jq -r ' .LoadBalancers[]| .DNSName,.LoadBalancerName,.Scheme'
The JQ loops over each array and I get a list like such
DNS-XXXXXXXXXXXXXXXXXXXXXXXX.elb.us-west-1.amazonaws.com
LBNAME-xxxxxxxxx
internal
DNS-XXXXXXXXXX.elb.us-west-1.amazonaws.com
LBNAME-XXXXXXXXXXXXXXXXXXXXXXXX
internal
QUESTION: Is there a way in JQ to print my values as a CSV or at least insert a space after every iteration of the loop ? If I can't do it via JQ what is the best way to achieve this ?
When I add @csv I get the following error "string ("XXXX...) cannot be csv-formatted, only array"
Partial JSON
"LoadBalancers": [
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-1:XXXXXXXXXXXXXXXXXXXXXXXX,
"DNSName": "DNS-XXXXXXXXXXXXXXXXXXXXXXXX.elb.us-west-1.amazonaws.com",
"CanonicalHostedZoneId": "xxxxxxxxx",
"CreatedTime": "2021-10-24T07:37:29.568000+00:00",
"LoadBalancerName": "LBNAME-xxxxxxxxx",
"Scheme": "internal",
"VpcId": "vpc-XXXXXXXXXX",
"State": {
"Code": "active"
},
"Type": "network",
"AvailabilityZones": [
{
"ZoneName": "us-west-1a",
"SubnetId": "XXXXXXXXXX,
"LoadBalancerAddresses": []
},
{
"ZoneName": "us-west-1c",
"SubnetId": "XXXXXXXXXX",
"LoadBalancerAddresses": []
}
],
"IpAddressType": "ipv4"
},
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-1:XXXXXXXXXXXXXXXXXXXXXXXX,
"DNSName": "DNS-XXXXXXXXXX.elb.us-west-1.amazonaws.com",
"CanonicalHostedZoneId": "XXXXXXXXXX",
"CreatedTime": "2022-01-05T14:14:14.570000+00:00",
"LoadBalancerName": "LBNAME-XXXXXXXXXXXXXXXXXXXXXXXX",
"Scheme": "internal",
"VpcId": "vpc-XXXXXXXXXX",
"State": {
"Code": "active"
},
"Type": "network",
"AvailabilityZones": [
{
"ZoneName": "us-west-1c",
"SubnetId": "subnet-XXXXXXXXXX",
"LoadBalancerAddresses": []
},
{
"ZoneName": "us-west-1a",
"SubnetId": "subnet-ZZZZZZZ",
"LoadBalancerAddresses": []
}
],
"IpAddressType": "ipv4"
}
]
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
@csv
期望一个数组,因此在其中构造一个字段:或者,通过将字符串格式化为您的喜欢:
@csv
expects an array, so construct one with your desired fields in it:Alternatively, construct each output line yourself by formatting a string to your likings: