Imprime linha específica com awk a partir da saída de df -h

0

Quando eu corro df -h eu vejo:

/dev/sda2                     46G  3.2G   41G   8% /
udev                          24G  4.0K   24G   1% /dev
tmpfs                        9.5G   10M  9.5G   1% /run
none                         5.0M     0  5.0M   0% /run/lock
none                          24G     0   24G   0% /run/shm
/dev/mapper/DG9999-lvDG9999   82T   75T  7.5T  91% /DG9999
/dev/sda3                     20G  445M   19G   3% /home
clamfs                        82T   75T  7.5T  91% /DG9999/clamfs

Estou usando este comando:

 df -h / | grep -v Filesystem | awk '{print $5}' | sed 's/%//g'

No momento, a saída mostra a quinta coluna na primeira linha da saída df -h , que é 8 . Como posso especificar que estou interessado na sexta linha da saída para que a saída mostre 91 .

Obrigado

    
por neilH 18.04.2017 / 17:22

1 resposta

4

Você precisa especificar o sistema de arquivos apropriado (ou ponto de montagem):

df -h /DG9999 | grep -v Filesystem | awk '{print $5}' | sed 's/%//g'

Ao analisar a saída de df na maioria dos sistemas Linux, você deve usar a opção -P para garantir que as informações de cada sistema de arquivos sejam mantidas em uma única linha:

df -hP /DG9999 | grep -v Filesystem | awk '{print $5}' | sed 's/%//g'

Você pode combinar toda a manipulação de saída para usar apenas o AWK:

df -hP /DG9999 | awk '!/Filesystem/ { print substr($5, 1, length($5) - 1) }'

Em qualquer configuração recente do GNU, você também pode executar

df --output=pcent /DG9999 | sed '1d;s/%//'
    
por 18.04.2017 / 17:27

Tags