「使用メモリ:19.54M」という文字列があるとします。そこから19.54を抽出するにはどうすればよいですか?19.54は頻繁に変更されるため、変数に格納して、次の反復の値と比較する必要があります。
grepとregexの組み合わせが必要だと思いますが、regexを本当に理解したことはありません。
「使用メモリ:19.54M」という文字列があるとします。そこから19.54を抽出するにはどうすればよいですか?19.54は頻繁に変更されるため、変数に格納して、次の反復の値と比較する必要があります。
grepとregexの組み合わせが必要だと思いますが、regexを本当に理解したことはありません。
おそらく、削除するのではなく、抽出したいと思うでしょう。パラメータ拡張を使用して、値を抽出できます。
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は整数のみを比較でき、浮動小数点演算はサポートされていないことに注意してください。
その他の可能な解決策:
と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}'`
=~
次のように、演算子でbash正規表現サポートを使用できます。
var="Memory Used: 19.54M"
if [[ $var =~ Memory\ Used:\ (.+)M ]]; then
echo ${BASH_REMATCH[1]}
fi
これは印刷されます19.54
> echo "Memory Used: 19.54M" | perl -pe 's/\d+\.\d+//g'
Memory Used: M