Isso deve funcionar para todos os três df de saídas:
df | awk '/\//{print $1,$(NF-1)}'
Esta é a saída de cada um dos exemplos que você publicou:
/dev/disk2 72%
/dev/hdv1 44%
/dev/root 17%
EXPLICAÇÃO:
O comando awk procura linhas que contenham / (assim, ignora os cabeçalhos) e imprime os primeiros campos ( $1 ) e penúltimo ( $(NF-1) ). Se você quiser somente a porcentagem de uso, faça o seguinte:
df | awk '/\//{print $(NF-1)}'
Atualização:
Minha resposta acima fornecerá o campo %iused na saída Mac df . Se você quiser o Capacity , faça isso (funciona nos três novamente):
df | perl -ne '/\// && do {/(.+?)\s.+?(\d+%)/ && print "$1 $2\n"}'
que também imprime o primeiro campo (o não-ganancioso (.+?) , terminado por \s ) e o primeiro número percentual ( (\d+%) , precedido pelo não-ganancioso .+? ).