- 此问题在此处已有答案**:
Parsing JSON with Unix tools(45个答案)
昨天关门了。
我有一个json文件file. json,如下所示:
{
"abc": "123",
"def": 456,
"ghi": 789
}
我试图在bash终端中使用regex获取所有键的值。
下面是我为获得abc的值所做的尝试:
var=cat file.json
regex='(abc\":) \"(.+)\",'
[[ $var =~ $regex ]]
echo ${BASE_REMATCH[1]}
它不打印任何内容。我正在尝试获取/打印abc的值,即**"123"**
请注意我不能使用jq解析器。
2条答案
按热度按时间wfveoks01#
虽然通常建议使用Json解析器(* 不要做别人已经做得很好的工作 *),但有时通过正则表达式解析Json用于 * 使用和丢弃 * 脚本或解析非常简单的json文件/字符串(如您在输入中使用的)也是可以的
如果是这种情况,这个可能对你有用(只要值是标量)
对于任何其他情况,请使用JSON解析器。
Perl几乎安装在每种Linux风格上,JSON::PP模块应该是核心模块的一部分。
你可以这样做:
omhiaaxx2#
用python 3从stdin读取你的file.json。
python3 example.py 'abc' < file.json
输出: