You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jq传递正则表达式为--arg参数无结果,求解决及bash脚本适配方案

解决jq通过--arg传递正则无结果的问题

直接修复方案

方案1:改用--argjson传递正则

--arg会将参数作为普通字符串处理,而--argjson会按JSON格式解析参数,确保正则里的Unicode字符和元字符正确传递给jq:

jq --argjson QUERY '"^ש[ְ-ׇ]*ל[ְ-ׇ]*ו[ְ-ׇ]*ם$"' '.[] | select(.translated | test($QUERY))' dict-he-en.json

方案2:给test函数添加Unicode模式标志

在test函数中加入"u"标志,强制jq以Unicode模式解析正则,正确识别希伯来语变音符号的字符范围:

jq --arg QUERY "^ש[ְ-ׇ]*ל[ְ-ׇ]*ו[ְ-ׇ]*ם$" '.[] | select(.translated | test($QUERY, "u"))' dict-he-en.json

替代方案(适合bash脚本)

方案1:使用独立jq脚本文件

将查询逻辑写入单独的文件(比如filter.jq):

.[] | select(.translated | test($QUERY))

然后在bash脚本中调用:

jq --arg QUERY "^ש[ְ-ׇ]*ל[ְ-ׇ]*ו[ְ-ׇ]*ם$" -f filter.jq dict-he-en.json

方案2:确保bash环境的Unicode编码正确

在脚本开头设置正确的locale,避免字符编码传递异常:

export LC_ALL=en_US.UTF-8
QUERY="^ש[ְ-ׇ]*ל[ְ-ׇ]*ו[ְ-ׇ]*ם$"
jq --arg QUERY "$QUERY" '.[] | select(.translated | test($QUERY))' dict-he-en.json

内容的提问来源于stack exchange,提问作者צבי

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 17:43:11