我有以下命令:
aws ec2 describe-regions --output=json
输出如下:
{
"Regions": [
{
"Endpoint": "ec2.eu-north-1.amazonaws.com",
"RegionName": "eu-north-1"
},
{
"Endpoint": "ec2.ap-northeast-2.amazonaws.com",
"RegionName": "ap-northeast-2"
},
{
"Endpoint": "ec2.us-west-2.amazonaws.com",
"RegionName": "us-west-2"
}
]
}
虽然这并不是真正可以在机器上使用的,但我正在单行上寻找输出,如下所示:
{"Regions":[{"Endpoint":"ec2.eu-north-1.amazonaws.com","RegionName":"eu-north-1"},{"Endpoint":"ec2.ap-northeast-2.amazonaws.com","RegionName":"ap-northeast-2"},{"Endpoint":"ec2.us-west-2.amazonaws.com","RegionName":"us-west-2"}]}
aws-cli是否有一些命令可以使我读取机器可读的JSON?像这样:
aws ec2 describe-regions --output='json-for-machines'
?
答案 0 :(得分:5)
使用jq像这样压缩它。
aws ec2 describe-regions --output=json| jq -c
输出变为
{"Regions":[{"Endpoint":"ec2.eu-north-1.amazonaws.com","RegionName":"eu-north-1"},{"Endpoint":"ec2.ap-northeast-2.amazonaws.com","RegionName":"ap-northeast-2"},{"Endpoint":"ec2.us-west-2.amazonaws.com","RegionName":"us-west-2"}]}
答案 1 :(得分:2)
jq answer是一个不错的选择。如果您没有jq
但有python
:
aws ec2 describe-regions --output=json | python -c 'import json, sys; json.dump(json.load(sys.stdin), sys.stdout)'
如果您没有jq
但有node
:
aws ec2 describe-regions --output=json | node -e 'console.log(JSON.stringify(JSON.parse(require("fs").readFileSync(0, "utf8"))))'
答案 2 :(得分:1)
如果您使用的是Windows cmd:
aws ec2 describe-regions --output json | ConvertFrom-Json | ConvertTo-Json -Compress
答案 3 :(得分:0)
如果您使用node.js解析json-stream,则可以使用:
https://github.com/ORESoftware/json-parser
const k = cp.spawn('bash');
k.stdin.end(`
aws ec2 describe-instances --output=json --region='us-west-2'; echo '∆';
aws ec2 describe-instances --output=json --region='us-west-1'; echo '∆';
aws ec2 describe-instances --output=json --region='us-east-1'; echo '∆';
`);
k.stdout.pipe(new JSONParser({delimiter:'∆'}).on('data', d => {
// { Reservations: [{}] }
});
只使用一些奇怪的unicode字符定界符,并且应该比使用换行符定界更糟,例如:
const delimiter = 'ƒ∆ø';