我正在尝试找到所有具有2个内核的虚拟机:
$ az vm list-sizes -o json --query "[?numberOfCores == 2]"
az vm list-sizes: error: argument --query: invalid query value: '[?numberOfCores == 2]'
由于我怀疑az
命令出错,我安装了jp directly,但它也出错了:
$ az vm list-sizes -o json | jp "[?numberOfCores == 2]"
SyntaxError: Invalid token: tNumber
[?numberOfCores == 2]
在the jmespath specification中,看起来我必须使用反引号`
字符,但不是错误而是没有结果:
$ az vm list-sizes -o json | jp '[?numberOfCores == `2`]'
[]
这是我在试图过滤的(缩写)返回的json:
$ az vm list-sizes -o json | head -n 20
[
{
"maxDataDiskCount": 4,
"memoryInMb": 123,
"name": "Standard_DS1",
"numberOfCores": 1,
"osDiskSizeInMb": 456,
"resourceDiskSizeInMb": 789
},
{
"maxDataDiskCount": 8,
"memoryInMb": 123,
"name": "Standard_DS2",
"numberOfCores": 2,
"osDiskSizeInMb": 456,
"resourceDiskSizeInMb": 789
}
]
(我对这些尺寸进行了混淆,因为我不想被MS起诉分享商业机密或其他东西)
答案 0 :(得分:2)
您的JMESPath查询是正确的,但是构建自制版public class DateWithAttributes
{
public string Date {get;set;}
public Attribute Attribute1 {get;set;}
public Attribute Attribute2 {get;set;}
...
}
List<DateWithAttributes> DateWithAttributesList = new List<DateWithAttributes>()
{
DateWithAttribute1,
DateWithAttribute2
}
List<DateWithAttributes> sortedDateList = DateWithAttributesList.OrderBy(x => x.date).ToList();
的方式存在问题(它使用过时的脚本来构建jp
二进制文件)。现在,自制安装的jp
版本将始终使用https://github.com/jmespath/jp/releases中已签名的发布二进制文件。每次提交都会测试这些二进制文件。如果您不使用自制软件,您应该可以jp
或使用https://github.com/jmespath/jp/releases中的二进制文件。