正则表达式在'='符号后提取子串

时间:2018-02-20 19:59:00

标签: regex linux sed grep

我看到很多例子,但由于某些原因它仍然不适合我。

这是我正在执行的命令:

NUMBER=$(docker logs vault | grep Token)
NUMBER=${NUMBER##*": "}
NUMBER=$(echo $NUMBER | sed 's/^token=(.*)$//g')
echo $NUMBER

我想在'='之后获取值,这基本上是一个字符串。 我尝试使用GREP和其他正则表达式,但我得不到任何东西,或只是原始字符串。

请告知。

2 个答案:

答案 0 :(得分:1)

使用sed,您可以使用

删除token=
NUMBER=$(echo token=dsa32e3 | sed 's/^token=//g') 
echo $NUMBER

其他用户指出,其他基于非正则表达式的替代方案也是可能的。

另一个有趣的可能性是使用负面的lookbehind,sed不支持,因此我使用了perl

NUMBER=$(echo token=dsa32e3 | perl -pe 's/.*(?<=token=)([a-z0-9]*)/$1/g')
echo $NUMBER

答案 1 :(得分:1)

要在分隔符之后获取文本,请使用cut代替sed,如下例所示:

echo 'token=dsa32e3' | cut -d= -f2

dsa32e3
  • -d==
  • 的分隔符设置为cut
  • -f1cut打印第一个字段