Windows 版本在 jqplay.org 有效的地方失败
Windows version fails where jqplay.org works
我一直在使用 jq 来解析 AWS cli 的输出。
输出看起来像这样..
{
"Vpcs": [
{
"CidrBlock": "10.29.19.64/26",
"State": "available",
"VpcId": "vpc-0ba51bd29c41d41",
"IsDefault": false,
"Tags": [
{
"Key": "Name",
"Value": "CloudEndure-Europe-Development"
}
]
}
]}
我正在使用的脚本如下所示..
.Vpcs[] | [.VpcId, .CidrBlock, (.Tags[]|select(.Key=="Name")|.Value)]
如果我 运行 它在 Windows 下,它会像这样失败。
jq: error: Name/0 is not defined at , line 1:
.Vpcs[] | [.VpcId, .CidrBlock, (.Tags[]|select(.Key==Name)|.Value)]
jq: 1 compile error
但它在 jqplay.org 中工作正常。
任何想法,关于 Windows 我正在使用 jq-1.6。
谢谢
布鲁斯.
正确的jq程序是
.Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == "Name" ) | .Value ) ]
您没有显示您使用的命令,但您向 jq
提供了以下内容:
.Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == Name ) | .Value ) ]
这是不正确的。 (注意遗漏的引号。)
你不仅没有提供你使用的命令,你没有指定它是否被提供给 Windows API (CreateProcess
), Windows Shell (cmd
) 或幂 Shell.
我猜 cmd
。为了向jq
提供上述程序,可以使用如下cmd
命令:
jq ".Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == \"Name\" ) | .Value ) ]" file.json
我不同意 ikegami 关于 [he/she?] 提供的 CMD 命令,因为用于 CMD 转义的字符是 ^
,而不是像 [=19] 那样的 \
=]++。我希望这会起作用(我不想在我的土豆上测试它):
jq .Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == "Name" ) | .Value ) ] file.json
或者这个:
jq .Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == ^"Name^" ) | .Value ) ] file.json
我一直在使用 jq 来解析 AWS cli 的输出。
输出看起来像这样..
{
"Vpcs": [
{
"CidrBlock": "10.29.19.64/26",
"State": "available",
"VpcId": "vpc-0ba51bd29c41d41",
"IsDefault": false,
"Tags": [
{
"Key": "Name",
"Value": "CloudEndure-Europe-Development"
}
]
}
]}
我正在使用的脚本如下所示..
.Vpcs[] | [.VpcId, .CidrBlock, (.Tags[]|select(.Key=="Name")|.Value)]
如果我 运行 它在 Windows 下,它会像这样失败。
jq: error: Name/0 is not defined at , line 1: .Vpcs[] | [.VpcId, .CidrBlock, (.Tags[]|select(.Key==Name)|.Value)] jq: 1 compile error
但它在 jqplay.org 中工作正常。
任何想法,关于 Windows 我正在使用 jq-1.6。
谢谢
布鲁斯.
正确的jq程序是
.Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == "Name" ) | .Value ) ]
您没有显示您使用的命令,但您向 jq
提供了以下内容:
.Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == Name ) | .Value ) ]
这是不正确的。 (注意遗漏的引号。)
你不仅没有提供你使用的命令,你没有指定它是否被提供给 Windows API (CreateProcess
), Windows Shell (cmd
) 或幂 Shell.
我猜 cmd
。为了向jq
提供上述程序,可以使用如下cmd
命令:
jq ".Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == \"Name\" ) | .Value ) ]" file.json
我不同意 ikegami 关于 [he/she?] 提供的 CMD 命令,因为用于 CMD 转义的字符是 ^
,而不是像 [=19] 那样的 \
=]++。我希望这会起作用(我不想在我的土豆上测试它):
jq .Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == "Name" ) | .Value ) ] file.json
或者这个:
jq .Vpcs[] | [.VpcId, .CidrBlock, ( .Tags[] | select( .Key == ^"Name^" ) | .Value ) ] file.json