我看到很多例子,但由于某些原因它仍然不适合我。
这是我正在执行的命令:
NUMBER=$(docker logs vault | grep Token)
NUMBER=${NUMBER##*": "}
NUMBER=$(echo $NUMBER | sed 's/^token=(.*)$//g')
echo $NUMBER
我想在'='之后获取值,这基本上是一个字符串。 我尝试使用GREP和其他正则表达式,但我得不到任何东西,或只是原始字符串。
请告知。
答案 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
-f1
让cut
打印第一个字段