![単語から数字を抽出する方法[重複]](https://linux33.com/image/12217/%E5%8D%98%E8%AA%9E%E3%81%8B%E3%82%89%E6%95%B0%E5%AD%97%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%5B%E9%87%8D%E8%A4%87%5D.png)
コマンドの出力があり、df
それを使用してcut
正常に抽出しました 22%
。しかし、問題は、値を他の整数変数と比較するので、望ましく22
ないことです。%
Bashでこれを行う方法は?
答え1
最も簡単で速いのは、おそらくbashを使用することです。パラメータ拡張機能、このように:
string="22%"
percentage="${string%\%}"
echo "$percentage" # Output: 22
の${string%\%}
最初のものは%
特別な意味を持ちます:パラメータの末尾から削除(このパラメータはstring
この例にあります。)
2番目%
は何パラメータから削除されました。しかし、%
この文脈では特別な意味を持つので、エスケープする必要があります\
。
より多くの例と情報については、以下を参照してください。高度なbashスクリプトガイド第10章。
答え2
sed
POSIXやawk
ツールに接続するなど、コマンドラインから数字を抽出する方法はいくつかあります。しかし、bashを使ってこれを行う方法を直接尋ねているからです。 22%に設定されたシェル変数$ VARIABLEがあると仮定すると、このコードは数値のみを取得するのに役立ちます。22
user@box:~$ VARIABLE='22%'
user@box:~$ echo "${VARIABLE%%\%}"
出力22
%
特に使用されている文字が「sheel変数に格納されている文字列の末尾から置き換える」などの特別な意味を持つ例では、考慮するのがやや混乱しています。 endから削除する必要がある%
文字通りの文字であることを示すには、次のようにエスケープする必要があります。\%