Não tenho certeza do que você está tentando fazer com awk
, mas você está complicando a expressão desnecessariamente. Tudo o que você precisa para produzir o sistema de arquivos, espaço livre e porcentagem de ocupação é:
df -h /|awk '{ print $1, $4, $5 }'
No entanto, isso não alinha os cabeçalhos com os dados. Para preservar o alinhamento, use algo como:
df -h /|awk '{ printf "%-60s %6s %6s\n", $1, $4, $5 }'
Aqui eu usei um primeiro campo grande porque meu disco de sistema está listado pelo UUID. Para mostrar porcentagem de espaço livre em vez de ocupação, você pode usar:
df -h /|awk '{ printf $5=="Use%"?"%-60s %6s Free%%\n":"%-60s %6s %6s%%\n", $1, $4, 100-$5 }'
Nesse caso, o sinal %
é ignorado na expressão aritmética. Não sei df
arredonda a porcentagem para o inteiro mais próximo, como assumi. Se arredondar para baixo, 100-$5
será arredondado para cima, então use 99-$5
para obter o espaço livre arredondado para baixo.