jq解析扩展名为.tgz的值

时间:2018-11-27 09:18:33

标签: python json shell jq

我正在尝试使用带有正则表达式的文件扩展名“ .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

1 个答案:

答案 0 :(得分:1)

首先,在设置json_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的参数也必须是正则表达式的JSON表示形式。

第三,至少在您的特定情况下,以上内容可以简化为:

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