「Memory Used:19.54M」という文字列があります。 どうすれば19.54を抽出できますか? 19.54は頻繁に変更されるので、変数に格納して次の反復で値と比較する必要があります。Bash:文字列の一部を抽出する
おそらくエキスにではなく、はにそれを削除したい
「Memory Used:19.54M」という文字列があります。 どうすれば19.54を抽出できますか? 19.54は頻繁に変更されるので、変数に格納して次の反復で値と比較する必要があります。Bash:文字列の一部を抽出する
おそらくエキスにではなく、はにそれを削除したい
..私は、私はgrepをし、正規表現のいくつかの組み合わせを必要と想像しますが、私は実際に正規表現を理解していませんでした。あなたは値を抽出するパラメータ展開を使用することができます。bashは整数だけを比較することができ
var="Memory Used: 19.54M"
var=${var#*: } # Remove everything up to a colon and space
var=${var%M} # Remove the M at the end
注意、それは浮動小数点演算をサポートしていません。
私がしたいことをExtractがうまく説明します。どのようにして3番目の行を変更して、 "。"それに続くすべては? – confusified
'$ {var%。*}'は、文字列の末尾にあるドットとそれに続くすべてを削除します。 – choroba
パーフェクト:)ただ必要なもの! – confusified
> echo "Memory Used: 19.54M" | perl -pe 's/\d+\.\d+//g'
Memory Used: M
他の可能な解決策:
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
付:
awk
で
var="Memory Used: 19.54M"
var=`echo "$var" | cut -d ' ' -f 3 | cut -d 'M' -f 1`
:
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
が重複する可能性が印刷されます[トリムする方法bash変数の空白?](http://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-bash-variabl e) – user2284570