Eu usaria ...
df --output=pcent /mount/point | tr -dc '0-9'
Não tenho certeza se sed é mais rápido, mas não consigo me lembrar dos valores sed.
Eu gostaria de um método para capturar o uso do disco de uma partição específica, usando o diretório onde a partição está montada. A saída deve ser apenas um inteiro sem preenchimento ou símbolos a seguir, como eu gostaria de salvá-lo em uma variável.
Eu usei df --output=pcent /mount/point
, mas preciso cortar a saída, pois ela tem um cabeçalho desnecessário, preenchimento de espaço único antes do valor e um símbolo% após o valor assim:
Use%
83%
Neste caso, a saída que gostaria seria simplesmente 83
. Não tenho conhecimento de nenhuma desvantagem de usar a saída de df
, mas estou feliz em aceitar outros métodos que não dependem dela.
Eu usaria ...
df --output=pcent /mount/point | tr -dc '0-9'
Não tenho certeza se sed é mais rápido, mas não consigo me lembrar dos valores sed.
Aqui está a solução do awk:
$ df --output=pcent /mnt/HDD | awk -F'%' 'NR==2{print }'
37
Basicamente, o que acontece aqui é que tratamos o caractere '%' como separador de campo (coluna delimitadora), e imprimimos a primeira coluna $ 1 somente quando o número de registros for igual a dois ( NR==2
parte)
Se quiséssemos usar as ferramentas bash
-only, poderíamos fazer algo assim:
bash-4.3$ df --output=pcent / | while IFS= read -r line; do ((c++)); [ $c -eq 2 ] && echo "${line%\%*}" ;done
74
sed
solution
df --output=pcent /mount/point | sed '1d;s/^ //;s/%//'
1d
elimina a primeira linha ;
para separar comandos s/^ //
remove um espaço do início das linhas s/%//
remove %
sign Você pode canalizar para um grep
que apenas extrai dígitos:
df --output=pcent /mount/point | grep -o '[0-9]*'
Veja ao vivo:
$ echo "Use%
> 83%" | grep -o '[0-9]*'
83
Eu deparei com um servidor onde --output = pcent ainda não estava implementado, então usei a saída normal, filtrada por coluna, seguida da regex: df /mount/point | awk '{print }' | tr -dc '0-9'