【发布时间】: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中存储的正则表达式相匹配。也就是说,对于这项特殊工作来说,它是错误的工具,它需要jq、jsawk或类似的。 -
charles duffy:是的,我说错了。我的意思是 bash 本身,而不是像 [[,如果有意义的话
-
@DTSCode, ...但是内置函数是外壳的一部分;实际上,
[[不仅仅是一个常规的内置函数(就像[一样),而且实际上是一个具有自己的解析器级别语法规则的关键字(因此它抑制全局扩展和字符串拆分的行为,能够表现不同基于单个字符是否被引用/转义等)。