无法使用正则表达式匹配整数值-错误(在<stdin>:6):数字不是字符串或数组

时间:2019-08-11 04:11:17

标签: json regex jq

我有多个具有一个人的年龄的JSON文件,我想使用正则表达式匹配特定的年龄,但是,我什至不能匹配文件中的单个整数。

我可以使用以下jq选择年龄,

jq -r .details.Age

我可以使用以下Name来匹配jq

jq -r 'select(.details.Name | match("r.*"))'

但是当我尝试将testmatchAge一起使用时,出现以下错误,

jq -r 'select(.details.Age | match(32))'
jq: error (at <stdin>:6): number not a string or array

这是代码

{
  "details": {
    "Age": 32,
    "Name": "reverent"
  }
}

我希望能够使用Age来匹配jq

jq -r 'select(.details.Age | match(\d))'

1 个答案:

答案 0 :(得分:1)

您的.Age值是一个数字,但是正则表达式可用于字符串,因此,如果您真的想使用正则表达式,则必须将数字转换为字符串。可以使用tostring完成,但是请记住,JSON数字的tostring表示可能并不总是您认为的那样。

–––

p.s。那应该是match("\\d")