Select JSON 具有特殊字符的值
Select JSON values with special characters
我想检测 JSON 值中的异常情况。
这是通过 jq
进行数据查询的示例
"2014-03-26 01:58:00"
"9019549360"
"109092812_20150626"
"134670164"
""
"97695498"
"680561513"
我想显示所有包含 -
或 _
或 blank
.
的值
换句话说,我想显示以下输出
"2014-03-26 01:58:00"
"109092812_20150626"
""
现在,我尝试了以下方法:
select (. | contains("-","_"," "))'
这似乎可行,但为了使其更健壮,我想扩展它以包括所有特殊字符。
您的查询不会检测到空字符串,并且可能会多次发出相同的字符串。使用 test
会更容易,例如:
select( length==0 or test("[-_ ]") )
还要注意开头的'.'在您的查询中是不必要的。
附录
从其中一条评论来看,您似乎希望指定“[^a-zA-Z0-9]”或类似 test
的参数。
我想检测 JSON 值中的异常情况。 这是通过 jq
进行数据查询的示例"2014-03-26 01:58:00"
"9019549360"
"109092812_20150626"
"134670164"
""
"97695498"
"680561513"
我想显示所有包含 -
或 _
或 blank
.
换句话说,我想显示以下输出
"2014-03-26 01:58:00"
"109092812_20150626"
""
现在,我尝试了以下方法:
select (. | contains("-","_"," "))'
这似乎可行,但为了使其更健壮,我想扩展它以包括所有特殊字符。
您的查询不会检测到空字符串,并且可能会多次发出相同的字符串。使用 test
会更容易,例如:
select( length==0 or test("[-_ ]") )
还要注意开头的'.'在您的查询中是不必要的。
附录
从其中一条评论来看,您似乎希望指定“[^a-zA-Z0-9]”或类似 test
的参数。