jq解析扩展名为.tgz的值

2024-10-04 09:30:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用正则表达式获取文件扩展名为“.tgz”的值。但是得到jq错误。你知道吗

json_var=[ { "Key": "raw/bene/test/nd_OneP4.tgz" }, { "Key": "raw/bene/test/nd_OneP4.tgz" } ]

echo $json_var | jq -r ' .[] | to_entries | map(select(.key | test("*.tgz")).value)'

Jq错误:

jq: error (at <stdin>:1): number (0) cannot be matched, as it is not a string

Tags: 文件tokeytestechojsonrawvar
1条回答
网友
1楼 · 发布于 2024-10-04 09:30:41

首先,在设置json\u var时,需要引用以下字符串:

json_var='[ { "Key": "raw/bene/test/nd_OneP4.tgz" }, { "Key": "raw/bene/test/nd_OneP4.tgz" } ]'

第二,不需要使用to_entries:要测试的字符串可以通过.Key访问:

echo $json_var |
  jq -r ' .[] | select(.Key | test("\\.tgz$")).Key'

还要注意test的参数必须是regex的JSON表示。你知道吗

第三,至少在你的特殊情况下,以上可以简化为:

echo $json_var | 
  jq -r ' .[][] | select( test("\\.tgz$"))'

相关问题 更多 >