正则表达式如何过滤问号

我想从如下内容中提取url:

{"code": 0, "data": {"cdnFileUrl": "http://download.example.com.cn/download/product/mi/rules/example_url_201902123.pkg", "code": 0, "message": "success", "packageVersion": "20190219141705"}, "message": "success"}

使用如下命令可以得到正确结果:
cat info1.txt | grep -Po '"cdnFileUrl": "[0-9a-zA-Z/-:._]+"' | awk -F'"' '{ print $(NF-1) }'

http://download.example.com.cn/download/product/mi/rules/example_url_201902123.pkg

可是现在对接的部门更改了连接形式,在链接中加了个问号,我搜了下问号应该要特殊处理,但是不知道如何搞,更改后的信息如下:

{"code": 0, "data": {"cdnFileUrl": "http://download.example.com.cn/download/product/mi/rules/example_url_201902123.pkg?secret3u4o3dbhj", "code": 0, "message": "success", "packageVersion": "20190219141705"}, "message": "success"}

那么如何提取出来

http://download.example.com.cn/download/product/mi/rules/example_url_201902123.pkg?secret3u4o3dbhj
阅读 3.1k
3 个回答
# cat info1.txt | awk -F'"' '{for(i=1;i<=NF;i++){if($i ~ /http:.?/)print $i}}'
http://download.example.com.cn/download/product/mi/rules/example_url_201902123.pkg?secret3u4o3dbhj

加上?字符

cat info1.txt | grep -Po '"cdnFileUrl": "[0-9a-zA-Z/-:._?]+"' | awk -F'"' '{ print $(NF-1) }'
新手上路,请多包涵

echo {"code": 0, "data": {"cdnFileUrl": "http://download.example.com.cn/download/product/mi/rules/example_url_201902123.pkg?secret3u4o3dbhj", "code": 0, "message": "success", "packageVersion": "20190219141705"}, "message": "success"}|awk '{print $5}'|sed 's/,$//g'

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进