我试图通过将jq if语句与test和regex一起使用来解析项目声纳数据库
jq -r 'if (.name | test("\\.example\\.com$")) then . else empty end'
并且我以脚本形式尝试了
zcat sonar.json.gz | jq --arg a "$b" -r 'if (.name | test($a)) then . else empty end'
而b =“ \。example \ .com $”
(在这里我实际上使用sed从用户输入创建正则表达式)。
如果我运行它,则无输出。如果我将--arg设置为“ \\。example \\。com $”,则可以正常运行。
将脚本变量解析为正则表达式时是否存在读取问题?
答案 0 :(得分:0)
我怀疑您的问题出在报价单上。
您没有提供足够的信息来提供准确的答案,但这是一个简单的bash脚本,它使用jq
传递的模式运行--arg
,您可以尝试使用该模式。请注意,在对A的赋值中使用了单引号。
#!/bin/bash
A='\.example\.com$'
echo A is $A
jq -M --arg a "$A" 'select(.value | test($a))'
给出以下输入
{ "value": "foo" }
{ "value": "foo.example.com" }
它产生
A is \.example\.com$
{
"value": "foo.example.com"
}
(请注意,我通常使用-M
来确保没有颜色添加到输出中)
答案 1 :(得分:0)
使用bash:
const [quantity, setQuantity] = useState({breakfast: 0, lunch: 0, dinner: 0});
const onChangeQuantity = (value, type) => {
let qty = quantity;
qty[type] = value;
//console.log(qty);
//{"breakfast": 0, "dinner": 0, "lunch": 6}
setQuantity(qty);
};