切り取り/grep df -h [繰り返し]

切り取り/grep df -h [繰り返し]

「Avail」列の下でマウントポイント「3.1T」を取得する方法(grepまたはcutを使用)?

Filesystem                            Size  Used Avail Use% Mounted on

vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07

答え1

df何を出力するか教えてください:

df -h --output=avail | tail -n1

注:これはすべての* nixに移植可能ではない可能性があります。

答え2

使用awk

awk '{print $4}'
3.1T  

 echo vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07 | awk '{print $4}'

またはgrep

 grep -o '\b3.1T\b'
 3.1T  

 echo vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07 | grep -o '\b3.1T\b'


\b in a regular expression means "word boundary".
-o, --only-matching

またはcut:

cut -d" " -f4
 3.1T  

 echo vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07 | cut -d" " -f4

実際には、テーブルを固定幅テーブルに変換してから、cut次のように使用する必要があります。

echo "vstorage://cluster07                  4.0T  907G  3.1T  23% /vstorage/cluster07" | awk '{for(i=1;i<=NF;i++) { printf "%-5s",$i } ; printf("\n"); }' | cut -d" " -f3
3.1T

答え3

次のコマンドを試してください。

df -h | awk '/\/vstorage\/cluster07/ {print $4}'

答え4

そしてsed

df -h | sed -rn 's|[^ ]+ +([^ ]+) .*|\1|p'

または以下を使用してgrep

df -h | grep -Eo '[0-9]+%'

%最後のものは出力の1つの文字にのみ依存するため、少し粗雑ですdf -h。しかし、それは非常にシンプルで効果的です。

関連情報