105

我有一个看起来像这样的字符串:

 GenFiltEff=7.092200e-01

使用 bash,我只想获取=字符后面的数字。有没有办法做到这一点?

4

5 回答 5

138

如果值已存储在变量中,则使用参数扩展。

$ str="GenFiltEff=7.092200e-01"
$ value=${str#*=}

或使用read

$ IFS="=" read name value <<< "GenFiltEff=7.092200e-01"

无论哪种方式,

$ echo $value
7.092200e-01
于 2013-03-01T02:09:27.733 回答
113

对于第一个之后=和下一个之前的文本=

cut -d "=" -f2 <<< "$your_str"

或者

sed -e 's#.*=\(\)#\1#' <<< "$your_str"

对于第一个之后的所有文本,=无论是否有多个=

cut -d "=" -f2- <<< "$your_str"
于 2013-03-01T01:21:05.430 回答
20
echo "GenFiltEff=7.092200e-01" | cut -d "=" -f2 
于 2013-03-01T01:26:51.337 回答
5
${word:$(expr index "$word" "="):1}

得到7. 假设您的意思是整个字符串的其余部分,只需去掉:1.

于 2013-03-01T01:23:00.107 回答
4

这应该有效:

your_str='GenFiltEff=7.092200e-01'
echo $your_str | cut -d "=" -f2
于 2013-03-01T01:19:51.547 回答