Shell 无法使用带grep的jq打印值

Shell 无法使用带grep的jq打印值,shell,grep,jq,Shell,Grep,Jq,我在代码中使用下面的jq语句和grep来打印一个值 jq '.Subnets[0].Tags' subnet.txt | grep -q "${add}usea1 internal us-east" 这对某些值很好,但是,很少有值需要grep为“${add}use*internal us east”,我可以使用星号以便打印我的所有值 当我包含星号时,我会出错。有什么建议吗?您没有遵循指南,但正如@Shelleter指出的,问题描述建议您只需使用适当的(grep)正则表达式: 但是,由于您在任何

我在代码中使用下面的jq语句和grep来打印一个值

jq '.Subnets[0].Tags' subnet.txt | grep -q "${add}usea1 internal us-east"
这对某些值很好,但是,很少有值需要grep为“${add}use*internal us east”,我可以使用星号以便打印我的所有值

当我包含星号时,我会出错。有什么建议吗?

您没有遵循指南,但正如@Shelleter指出的,问题描述建议您只需使用适当的(grep)正则表达式:

但是,由于您在任何情况下都在使用jq,因此最好通过扩展jq过滤器来执行过滤,例如:

jq --arg add "$add" '
  .Subnets[0].Tags
  | select(test("\($add)use.* internal us-east"))
' subnet.txt 


回想一下,正则表达式中的
*
表示前面的零个或多个字符,
表示任何单个字符,
*
将由shell处理,除非它被引用。使用
…,您可能会得到您想要的grep-q“${add}使用。*美国东部内部”
。祝你好运。在代码示例中添加4个空格,或者对于多行代码,请在所选文本的“编辑”菜单中使用
{}
工具。
jq --arg add "$add" '
  .Subnets[0].Tags
  | select(test("\($add)use.* internal us-east"))
' subnet.txt