提问人:nmakb 提问时间:11/9/2023 最后编辑:nmakb 更新时间:11/11/2023 访问量:60
使用 AWS CLI 对 EBS 卷进行排序
sort ebs volumes using aws cli
问:
我想获取 xyz 集群的所有实例列表(将有 20 个 ec2)以及卷信息(设备名称和卷 ID)。有些实例的卷按一个顺序排列,有些实例按不同的顺序排列。想要从此输出中对设备进行排序,我该怎么做?
aws ec2 describe-instances --filters 'Name=tag:cluster,Values=xyz' --query "Reservations[].Instances[].[InstanceId,BlockDeviceMappings[].[DeviceName,Ebs.VolumeId][]]" --output text | paste -d" " - -
-- This is how it gets it
i-abc /dev/sdc vol-sdc /dev/sdb vol-sdb /dev/sdd vol-sdad
i-def /dev/sdd vol-sdd /dev/sdb vol-sdb /dev/sdc vol-sdac
-- how I want it
i-abc /dev/sdb vol-sdb /dev/sdc vol-sdc /dev/sdd vol-sdad
i-def /dev/sdb vol-sdb /dev/sdc vol-sdac /dev/sdd vol-sdd
答:
1赞
Paolo
11/9/2023
#1
我怀疑您是否能够使用 aws-cli 实现所需的输出。但是你可以求助于这样的东西:awk
$ cat file
i-abc /dev/sdc vol-sdc /dev/sdb vol-sdb /dev/sdd vol-sdad
i-def /dev/sdd vol-sdd /dev/sdb vol-sdb /dev/sdc vol-sdac
$ awk '{
for (i=2;i<=NF;i+=2) {
PROCINFO["sorted_in"]="@ind_str_asc";
volumes[$i]=$(i+1)
};
{
printf "%s",$1;
for (i in volumes) {
printf(" %s %s", i, volumes[i])
};
printf "\n"
}
}' file
i-abc /dev/sdb vol-sdb /dev/sdc vol-sdc /dev/sdd vol-sdad
i-def /dev/sdb vol-sdb /dev/sdc vol-sdac /dev/sdd vol-sdd
评论