Você pode usar o awk para imprimir informações apropriadas, dividindo a linha em duas usando :
como separador de campo.
diskutil info / | awk -F':' '/Free Space/ {gsub(/\(.*/,""); gsub(/\ /,""); print $2}'
Do resultado deste comando:
diskutil info / | grep "Free Space"
que é algo assim:
Volume Free Space: 31.5 GB (31519584256 Bytes) (exactly 61561688 512-Byte-Units)
Eu quero apenas obter
31.5 GB
Como posso fazer isso?
Você pode usar o awk para imprimir informações apropriadas, dividindo a linha em duas usando :
como separador de campo.
diskutil info / | awk -F':' '/Free Space/ {gsub(/\(.*/,""); gsub(/\ /,""); print $2}'
Usando grep
com PCRE ( -P
):
diskutil info / | grep -Po 'Free Space:\s+\K[^(]+(?=\s+\()'
Free Space:\s+
corresponde à parte antes da saída desejada, \K
descarta a correspondência
[^(]+
corresponde à saída desejada, o padrão lookahead positivo de largura zero (?=\s+\()
garante que a correspondência seja seguida por espaços em branco e (
.
Lógica semelhante usando sed
:
diskutil info / | sed -r 's/.*Free Space:\s+([^(]+)\s+\(.*//'
Exemplo:
% grep -Po 'Free Space:\s+\K[^(]+(?=\s+\()' <<<'Volume Free Space: 31.5 GB (31519584256 Bytes) (exactly 61561688 512-Byte-Units)'
31.5 GB
% sed -r 's/.*Free Space:\s+([^(]+)\s+\(.*//' <<<'Volume Free Space: 31.5 GB (31519584256 Bytes) (exactly 61561688 512-Byte-Units)'
31.5 GB
No Ubuntu 14.04 e acima, use apenas df
:
$ df -h --output=size /
Size
30G
Para se livrar do cabeçalho da coluna:
$ df -h --output=size / | tail -1
30G