パーティションがマウントされているディレクトリを使用して、特定のパーティションのディスク使用量をキャプチャする方法が必要です。出力は、変数に保存したいので、パディングや後続の記号のない整数でなければなりません。
df --output=pcent /mount/point
を使用しましたが、不要なヘッダー、値の前にスペースが1つ埋め込まれ、値の後に%記号が続くため、出力をトリミングする必要があります。
Use%
83%
この場合、私が望む出力は83
になります。 df
の出力を使用することの欠点は認識していませんが、それに依存しない他のメソッドを受け入れて喜んでいます。
使用したい...
df --output=pcent /mount/point | tr -dc '0-9'
Sedの方が速いかどうかはわかりませんが、sedの値を思い出せません。
Awkソリューションは次のとおりです。
$ df --output=pcent /mnt/HDD | awk -F'%' 'NR==2{print $1}'
37
基本的にここで何が起こるかは、 '%'文字をフィールドセパレーター(列区切り文字)として扱い、レコード数が2に等しい場合にのみ最初の列$ 1を印刷することです(NR==2
部分)
bash
- onlyツールを使用したい場合、次のようなことができます。
bash-4.3$ df --output=pcent / | while IFS= read -r line; do
> ((c++));
> [ $c -eq 2 ] && echo "${line%\%*}" ;
> done
74
また、楽しみのために、キャプチャグループ経由の代替sed
および拡張正規表現用の-r
:
df --output=pcent | sed -nr '/[[:digit:]]/{s/[[:space:]]+([[:digit:]]+)%/\1/;p}'
数字を抽出するだけのgrep
にパイプできます。
df --output=pcent /mount/point | grep -o '[0-9]*'
ライブで見る:
$ echo "Use%
> 83%" | grep -o '[0-9]*'
83
sed
ソリューション
df --output=pcent /mount/point | sed '1d;s/^ //;s/%//'
1d
最初の行を削除;
はコマンドを分離しますs/^ //
行の先頭からスペースを削除しますs/%//
削除%
記号去年はややbash(Borne Again Shell)ファンだったので、それを使った解決策を提案すると思いました。
$ DF_PCT=$(df --output=pcent /mnt/d)
$ echo ${DF_PCT//[!0-9]/}
5
df
出力を変数DF_PCT
にキャプチャします。DF_PCT
の数字以外のすべてを削除し、画面に表示します。5
)が生成された後の改行です。別のソリューションを次に示します。
df | grep /mount/point | awk '{ print $5 }' | cut -d'%' -f1
--output = pcentがまだ実装されていないサーバーに遭遇したため、通常の出力を使用し、列でフィルター処理した後、正規表現を使用しました:df /mount/point | awk '{print $5}' | tr -dc '0-9'