Na ausência de qualquer parâmetro, xargs divide sua entrada em palavras e gera as mesmas, separadas por espaços simples:
echo -e a b\nc | xargs
dá
a b c
Portanto, a saída de df do piping por meio de xargs reduz isso em uma única linha, que é dividida novamente por awk aqui.
Os tokens $n são substituídos pela palavra n ; contando palavras na sua saída de exemplo (e na saída de free -m ) mostra a correspondência.
xargs poderia ser evitado aqui, instruindo awk para ver apenas a segunda linha de sua entrada. Além disso, a opção -P deve ser usada com df aqui para evitar a divisão de nomes extensos de dispositivos.