仅当在结果之外创建变量时才出现 grep 错误

仅当在结果之外创建变量时才出现 grep 错误

我正在 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":.*?[^\\]",')

它按预期工作。

相关内容