说我有字符串“Memory Used:19.54M” 我如何从中提取19.54? 19.54将经常更改,因此我需要将其存储在变量中,并将其与下一次迭代的值进行比较。
我想我需要一些grep和regex的组合,但我从来没有真正理解正则表达式..
答案 0 :(得分:73)
您可能希望提取而不是删除它。您可以使用参数扩展来提取值:
var="Memory Used: 19.54M"
var=${var#*: } # Remove everything up to a colon and space
var=${var%M} # Remove the M at the end
请注意,bash只能比较整数,它没有浮点算术支持。
答案 1 :(得分:39)
其他可能的解决方案:
使用grep
:
var="Memory Used: 19.54M"
var=`echo "$var" | grep -o "[0-9.]\+"`
使用sed
:
var="Memory Used: 19.54M"
var=`echo "$var" | sed 's/.*\ \([0-9\.]\+\).*/\1/g'`
使用cut
:
var="Memory Used: 19.54M"
var=`echo "$var" | cut -d ' ' -f 3 | cut -d 'M' -f 1`
使用awk
:
var="Memory Used: 19.54M"
var=`echo "$var" | awk -F'[M ]' '{print $4}'`
答案 2 :(得分:3)
您可以对<plugin name="org.apache.cordova.network-information" spec="0.2.15" source="pgb" />
运算符使用bash正则表达式支持,如下所示:
=~
这将打印var="Memory Used: 19.54M"
if [[ $var =~ Memory\ Used:\ (.+)M ]]; then
echo ${BASH_REMATCH[1]}
fi
答案 3 :(得分:1)
> echo "Memory Used: 19.54M" | perl -pe 's/\d+\.\d+//g'
Memory Used: M