我正在 Bash 中解析一些 JSON。如果我在 Bash 命令提示符下执行此操作:
猫垃圾|grep -Po'“loc”:.*?[^\\]",'
它返回:
“loc”:“21.0393,105.7666”,
但是,如果我这样做来设置一个包含结果的变量:
测试 =`cat junk|grep -Po'“loc”:.*?[^\\]",'`
它返回:
grep:缺少字符类的终止符 ]
由于某种原因,使用 {'} 的变量封装似乎会触发 grep 和我的正则表达式的某些操作
junk 是包含一些来自查询的 json 文件http://ipinfo.io:
{ "ip": "103.147.184.52", "city": "Cầu Diễn", "region": "Hanoi", "country": "VN", "loc": "21.0393,105.7666", "org": "AS135905 越南邮电集团", "timezone": "Asia/Ho_Chi_Minh", "readme": "https://ipinfo.io/missingauth“ }
我是否遗漏了一些明显的东西?
答案1
steeldriver 指出,使用反引号进行命令替换已被弃用。
当我使用这个表格时:
测试=$(cat junk|grep -Po'"loc":.*?[^\\]",')
它按预期工作。