【问题标题】:How to use regular expressions in bash [duplicate]如何在bash中使用正则表达式[重复]
【发布时间】:2015-11-03 18:31:01
【问题描述】:

我有以下文字:

{"version":"0.0.1","build":"5d687795216a527f26c04c9c8da9551a72cb7fed","environment":"stage"}

如何在 bash 中从上述文本中检索 5d687795216a527f26c04c9c8da9551a72cb7fed?

【问题讨论】:

  • bash 是一个外壳,没有正则表达式的概念。相反,您需要使用像 grep 这样的程序。
  • 我猜是like this
  • @DTSCode,不正确; bash 确实 有内置的正则表达式支持;这就是[[ $string =~ $re ]] 的含义,将$foo 的内容与$re 中存储的正则表达式相匹配。也就是说,对于这项特殊工作来说,它是错误的工具,它需要 jqjsawk 或类似的。
  • charles duffy:是的,我说错了。我的意思是 bash 本身,而不是像 [[,如果有意义的话
  • @DTSCode, ...但是内置函数是外壳的一部分;实际上,[[ 不仅仅是一个常规的内置函数(就像 [ 一样),而且实际上是一个具有自己的解析器级别语法规则的关键字(因此它抑制全局扩展和字符串拆分的行为,能够表现不同基于单个字符是否被引用/转义等)。

标签: regex bash


【解决方案1】:

您所拥有的不仅仅是文本,而是一种称为 JSON 的结构化数据树格式。

因此,您应该使用像 jq 这样的 JSON 工具来处理它:

echo '{"version":"0.0.1","build":"5d687795216a527f26c04c9c8da9551a72cb7fed","environment":"stage"}' \
    | jq -r '.build'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-05
    • 2021-08-21
    • 1970-01-01
    • 2020-02-13
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多