シェルスクリプトから行を水平に印刷する

シェルスクリプトから行を水平に印刷する

尋ねる:

aws ec2 describe-vpcs --region us-east-1 | 
    grep -w "VpcId\|CidrBlock" | 
        cut -d ":" -f2 | tr -d '[','"',',','{',' '

ソート前の生出力:

[
    {
        "VpcId": "vpc-xxxx",
        "CidrBlock": "1.0.0.0/16",
    "OwnerId": "1234567890"
    }
]
[
    {
        "VpcId": "vpc-xxxx",
        "CidrBlock": "2.0.0.0/16",
    "OwnerId": "1234567890"
    }
]

ソート後の出力:

vpc-xxxxxx
1.0.0.0/16
1234567890
vpc-xxxxxx
2.0.0.0/16
1234567890

この形式で出力したいです。

vpc-xxxxxx|1.0.0.0|1234567890 
vpc-xxxxxx|2.0.0.0|1234567890
  

誰でも私を助けることができますか?

ベストアンサー1

私はawsのクエリを使用してからawk(そしていくつかtr

 aws ec2 describe-vpcs --region us-east-1 --query 'Vpcs[].{VpcId: VpcId, CidrBlock: CidrBlock}'|
  tr -d '",' |
  awk -F: '$1 ~/VpcId/  { vpc=$2 } $1 ~ /CidrBlock/ { printf "%s | %s\n",vpc,$2 } '

これは(私に)

vpc-d98685b3 |  172.31.0.0/16

生出力から

[
    {
        "VpcId": "vpc-d98685b3",
        "CidrBlock": "172.31.0.0/16"
    }
]

おすすめ記事