使用 sed 查找给定正则表达式的值
using sed to find a value given a regex
我正在尝试从某些输出中获取值。假设我想要这个 json 对象的 id
属性:
{"id":123,"useless1":"uselessValue","useless2":uselessValue}
我试过这个:
a={"id":123,"useless1":"uselessValue","useless2":uselessValue}
echo $a | sed -e s/.*"id":(\d+).*//g
但是returns{"id":123,"useless1":"uselessValue","useless2":uselessValue}
我也试过了this example
如果我复制:
echo "12 BBQ ,45 rofl, 89 lol" | sed -e 's/.*(\d+) rofl.*//g'
我得到:
12 BBQ ,45 rofl, 89 lol
而不是45
我正在使用 MacOs High Sierra (10.13.6)
如果你使用jq
,它会像
一样简单
jq '.id' file
如果您想修复 sed
命令,请确保在 RHS 中使用 BRE POSIX 兼容模式和 </code> 占位符:</p>
<pre><code>sed -e 's/.*"id":\([0-9][0-9]*\).*//'
兴趣点:
- 捕获组定义为
\(...\)
- 一个或多个数字匹配
[0-9][0-9]*
我正在尝试从某些输出中获取值。假设我想要这个 json 对象的 id
属性:
{"id":123,"useless1":"uselessValue","useless2":uselessValue}
我试过这个:
a={"id":123,"useless1":"uselessValue","useless2":uselessValue}
echo $a | sed -e s/.*"id":(\d+).*//g
但是returns{"id":123,"useless1":"uselessValue","useless2":uselessValue}
我也试过了this example
如果我复制:
echo "12 BBQ ,45 rofl, 89 lol" | sed -e 's/.*(\d+) rofl.*//g'
我得到:
12 BBQ ,45 rofl, 89 lol
而不是45
我正在使用 MacOs High Sierra (10.13.6)
如果你使用jq
,它会像
jq '.id' file
如果您想修复 sed
命令,请确保在 RHS 中使用 BRE POSIX 兼容模式和 </code> 占位符:</p>
<pre><code>sed -e 's/.*"id":\([0-9][0-9]*\).*//'
兴趣点:
- 捕获组定义为
\(...\)
- 一个或多个数字匹配
[0-9][0-9]*