我有一个看起来像这样的字符串:
GenFiltEff=7.092200e-01
使用bash,我想要获取等号
=
之后的数字。有没有办法做到这一点?$ str="GenFiltEff=7.092200e-01"
$ value=${str#*=}
或使用 read
$ IFS="=" read name value <<< "GenFiltEff=7.092200e-01"
$ echo $value
7.092200e-01
${str##*=}
获取最后一个匹配项后面的内容。
使用${str#*=}
获取第一个匹配项后面的内容。
使用${str%%=*}
获取第一个匹配项之前的内容。
使用${str%=*}
获取最后一个匹配项之前的内容。
字符串操作 @ tldp.org - lepe$ IFS="=" read name value <<< "GenFiltEff=7.092200e-01"
使用bash 4.4.5 - sn1ckers#*=
这里具体是做什么的? - buildsucceeded#
运算符从 $str
的扩展中省略与模式 *=
匹配的最短前缀。 - chepner=
之后且在下一个=
之前的文本。cut -d "=" -f2 <<< "$your_str"
或者
sed -e 's#.*=\(\)#\1#' <<< "$your_str"
cut -d "=" -f2- <<< "$your_str"
echo "GenFiltEff=7.092200e-01" | cut -d "=" -f2
your_str='GenFiltEff=7.092200e-01'
echo $your_str | cut -d "=" -f2
${word:$(expr index "$word" "="):1}
假设您需要获取字符串中除第一个字符外的所有内容,可以省略掉:1
这个参数。
$value = ${word:$(expr index "$word" "=")}
对我来说很有效,可以返回等号后面的所有内容。 - DTrejo
How to grep
询问如何使用grep进行匹配,而这个问题则是询问如何获取字符后面的字符串...与grep
无关。 - Jamie Hutber