【发布时间】:2017-07-28 07:12:04
【问题描述】:
{"running": 1, "finished": 3, "node_name": "L-2.local", "pending": 0, "status": "ok"}
我正在尝试解析此响应以使用 bash 脚本检查“正在运行”的值。我知道有库可以做到这一点,但由于某些原因 jq 库不会安装,我不想安装它,因为我只需要它来执行这个命令。通常我会使用 Python。
我尝试在响应中使用另一个答案中的此命令
| grep -Po '"running":"\K[^,]*'
但由于“。”而失败
bash: {"running": 0, "finished": 0, "node_name": "L-2: command not found
有没有办法让它用 grep 检查“运行”的值,并且没有错误?
【问题讨论】:
-
你在
:之后的模式中有一个",但字符串中没有引号。使用echo '...string...' | grep -Po '"running":\s*\K[^,]+'。如果您确定只有数字,请使用'"running":\s*\K\d+' -
谢谢,我的意思是添加不带引号的版本。我现在发现 -P 选项不适用于 OSX,所以还不能让它工作。
-
您可以使用
sed来获取值,尽管它看起来并不漂亮。看我的回答。