amazon-web-services - AWS CLI 将输出加载到多行
问题描述
我正在使用 aws cli 给我一些我需要的 .csv 格式的输出。
下面显示了我放在一起的命令:
aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[VpcId, SubnetId, InstanceId, InstanceType, ImageId, State.Name, LaunchTime, Placement.AvailabilityZone, Placement.Tenancy, PrivateIpAddress, PrivateDnsName, PublicDnsName,[Tags[?Key==`Name`].Value],[Tags[?Key==`PowerData`].Value] ]' --output text | sed -E 's/\s+/,/g'
出于某种原因,最后两条信息“Name”和“PowerData”最终出现在不同的行中。当我在电子表格中打开它时,这会破坏我的格式。
有人对可能导致该问题的原因或我如何解决它有任何想法吗?
解决方案
原因是标签返回数组,因此您需要打印0
索引上的唯一值以TAGs
在单行上显示。您可以验证这一点
aws ec2 describe-instances --output json --query 'Reservations[*].Instances[*].Tags[]'
输出
[
{
"Key": "Name",
"Value": "demo"
},
{
"Key": "PowerData",
"Value": "demo"
}
]
所以你需要管道表达式
Tags[?Key==`Name`].Value| [0]
通过添加过滤器,我们可以将一个表达式的结果传递给另一个表达式,对投影(或任何表达式)的结果进行操作。
表达:
foo.*.bar | [0]
所以试试这个
aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[VpcId, SubnetId, InstanceId, InstanceType, ImageId, State.Name, LaunchTime, Placement.AvailabilityZone, Placement.Tenancy, PrivateIpAddress, PrivateDnsName, PublicDnsName,Tags[?Key==`Name`].Value| [0],Tags[?Key==`PowerData`].Value | [0] ]' --output text | sed -E 's/\s+/,/g'
推荐阅读
- javascript - 带有 localStorage 的 JavaScript 中的新文本行
- javascript - 如何使用异步在循环内发出 GET 请求
- python - 使用多项式贝叶斯分类器
- c++11 - 当我使用 fout 而不是 cout 时,我的代码会打印一个不同的数字
- matlab - 在具有大半径(10 ^ 9)的球体内均匀分布粒子 - Matlab
- typescript - Typescript 通用映射类型保留键值对
- python-3.x - 如何将一个 Python 类中的所有打印语句分配给变量内的另一个类
- python - 在已排序的多维 numpy 数组中沿轴查找最后一个非 NaN 值
- css - 网格区域即使不在网格模板区域中也会显示
- amazon-ec2 - xymon不会显示cpu、磁盘、内存等系统参数