鉴于以下JSON,我试图选择所有command
元素。我的问题是"checkout"
字符串弄乱了我对所有"run"
字典的选择。
我正在尝试通过类似.[].run.command
的jq传递消息,但我不断收到错误jq: error (at <stdin>:33): Cannot index string with string "run"
如何将"checkout"
字符串排除在选择范围之外?
[
"checkout",
{
"run": {
"command": "pip install cfn-lint pycodestyle pyflakes",
"name": "Install Dependencies"
}
},
{
"run": {
"command": "find stacks -type f -name \"*.yml\" -exec cfn-lint -i E3016 -i E3012 -i E1029 --template {} \\; | tee -a output.txt",
"name": "Run cfn-lint"
}
},
{
"run": {
"command": "find stacks -type f -name \"*.py\" -exec pyflakes {} \\; | tee -a output.txt",
"name": "Run pyflakes"
}
},
{
"run": {
"command": "pycodestyle --show-source --show-pep8 --ignore=E501,W605 stacks/src | tee -a output.txt",
"name": "Run pycodestyle"
}
},
{
"run": {
"command": "if [[ -s output.txt ]]; then cat output.txt; exit 1; fi",
"name": "Exit if there are validation warnings/errors"
}
}
]
答案 0 :(得分:2)
如果您要处理具有固定结构的这类数组的集合,其中第一项就像一个别名,然后执行一系列操作,则可以跳过第一项并处理其余项。
a[href^="tel:"] {
padding-bottom: 2px;
font-size: 1.25rem;
color: $text-body;
text-decoration: none;
border-color: rgba(0, 0, 0, .2);
border-bottom: 1px solid;
}
a[href^="tel:"]:hover,
a[href^="tel:"]:focus,
a[href^="tel:"]:active {
color: #000;
border-color: #000;
border-bottom: 1px solid;
}
否则,如果将其真正混合并且任何项目都可以是任何东西,则必须进行某种过滤以作为峰轮廓。
答案 1 :(得分:1)
以下是您所显示的过滤器的简单变体形式的解决方案:
sum(a: ~Number, b: ~Number) -> ~Number
Produce the sum of the two numbers, a and b
“?”是.[].run?.command
包装器的语法糖。
这是另一个变体,它还建议其他人:
try