我目前有以下AWS CLI命令:
$ /usr/local/bin/aws ec2 describe-instances --profile test --region eu-central-1 --query 'Reservations[].Instances[].[InstanceType,Tags[?Key==`Name`].Value[],Tags[?Key==`DomainName`].Value[]]' --output text
返回:
- 自然管理
- 管理
- t2.微米
但我希望看到它打印在同一行,用制表符或逗号分隔。
如果你想在一行中看到所有内容都用逗号分隔,你可以这样写:
/usr/local/bin/aws ec2 describe-instances --region eu-central-1 --query 'Reservations[].Instances[].[InstanceType,Tags[?Key==`Name`].Value[],Tags[?Key==`DomainName`].Value[]]' --output text | paste -sd "," -
与选项卡相同:
/usr/local/bin/aws ec2 describe-instances --region eu-central-1 --query 'Reservations[].Instances[].[InstanceType,Tags[?Key==`Name`].Value[],Tags[?Key==`DomainName`].Value[]]' --output text | paste -sd "t" -
因此,答案是使用bash管道并粘贴
您可能返回了多个实例,并且可以使用awk
将行合并为一行。
在您的情况下,一个实例的3个值被重新调整,因此我们可以将3行合并为1个
逗号分隔符,添加
| awk '{line=line "," $0} NR%3==0{print substr(line,2); line=""}'
选项卡分隔符,添加
| awk '{line=line "t" $0} NR%3==0{print substr(line,2); line=""}'
以便在每一行中都有一个实例的信息。如果要提取更多信息,可以将NR%3
中的3
更改为要提取的信息数