grep:组捕获

新手上路,请多包涵

我有以下字符串:

 {"_id":"scheme_version","_rev":"4-cad1842a7646b4497066e09c3788e724","scheme_version":1234}

我需要获取“方案版本”的值,在本例中为 1234。

我努力了

grep -Eo "\"scheme_version\":(\w*)"

但是它会返回

"scheme_version":1234

我怎样才能做到?我知道我可以添加 sed 调用,但我更喜欢使用单个 grep 来完成。

原文由 lstipakov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 844
2 个回答

这可能对您有用:

 echo '{"_id":"scheme_version","_rev":"4-cad1842a7646b4497066e09c3788e724","scheme_version":1234}' |
sed -n 's/.*"scheme_version":\([^}]*\)}/\1/p'
1234

抱歉,它不是 grep ,因此如果您愿意,请忽略此解决方案。

或者坚持使用 grep 并添加:

 grep -Eo "\"scheme_version\":(\w*)"| cut -d: -f2

原文由 potong 发布,翻译遵循 CC BY-SA 3.0 许可协议

您需要使用断言后面的查看,以便它不包含在匹配中:

 grep -Po '(?<=scheme_version":)[0-9]+'

原文由 SiegeX 发布,翻译遵循 CC BY-SA 4.0 许可协议

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