単語から数字を抽出する方法[重複]

単語から数字を抽出する方法[重複]

コマンドの出力があり、dfそれを使用してcut正常に抽出しました 22%。しかし、問題は、値を他の整数変数と比較するので、望ましく22ないことです。%Bashでこれを行う方法は?

答え1

最も簡単で速いのは、おそらくbashを使用することです。パラメータ拡張機能、このように:

string="22%"
percentage="${string%\%}"

echo "$percentage"   # Output: 22

${string%\%}最初のものは%特別な意味を持ちます:パラメータの末尾から削除(このパラメータはstringこの例にあります。)

2番目%パラメータから削除されました。しかし、%この文脈では特別な意味を持つので、エスケープする必要があります\

より多くの例と情報については、以下を参照してください。高度なbashスクリプトガイド第10章

答え2

sedPOSIXやawkツールに接続するなど、コマンドラインから数字を抽出する方法はいくつかあります。しかし、bashを使ってこれを行う方法を直接尋ねているからです。 22%に設定されたシェル変数$ VARIABLEがあると仮定すると、このコードは数値のみを取得するのに役立ちます。22

user@box:~$ VARIABLE='22%'
user@box:~$ echo "${VARIABLE%%\%}"

出力22

%特に使用されている文字が「sheel変数に格納されている文字列の末尾から置き換える」などの特別な意味を持つ例では、考慮するのがやや混乱しています。 endから削除する必要がある%文字通りの文字であることを示すには、次のようにエスケープする必要があります。\%

関連情報