head
exemplo:
Desktop:
λ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s7s1 113Gi 8.9Gi 8.6Gi 51% 355384 90345720 0% /
/dev/disk1s2 113Gi 3.3Gi 8.6Gi 28% 1743 90345720 0% /System/Volumes/Preboot
/dev/disk1s4 113Gi 24Ki 8.6Gi 1% 5 90345720 0% /System/Volumes/VM
/dev/disk1s6 113Gi 63Mi 8.6Gi 1% 660 90345720 0% /System/Volumes/Update
/dev/disk1s5 113Gi 91Gi 8.6Gi 92% 655534 90345720 1% /System/Volumes/Data
/dev/disk1s1 113Gi 64Ki 8.6Gi 1% 15 90345720 0% /Volumes/mnbvcxz - Data
/dev/disk3s1 58Gi 57Gi 843Mi 99% 209 8636800 0% /Volumes/Untitled
Desktop:
λ df -h | head -n1
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
Existe um cmd específico que mostrará a saída dos campos por espaço em vez de nova linha?
Um cmd que fará o que este awk
cmd faz:
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on \
| awk -F ' ' '{print$1}'
Filesystem
Você parece estar procurando
cut
.Com o seu exemplo, isso seria
cut -d' ' -f1
.Irritantemente, não existe um comando padrão que extraia intervalos de colunas separados por uma quantidade variável de espaços em branco sem alterar o espaçamento:
cut -d ' ' -f 1-2
, qualquer espaço único é um delimitador, por exemplo," a b"
são 4 campos: "", a, "", b.cut -c 1-4
apenas corta caracteres, não camposawk '{print $1, $2}'
extrai campos separados por qualquer quantidade de espaços em branco, ignorando os iniciais e finais, pois esse é o comportamento especial quandoFS=" "
é por padrão, mas esses campos são exibidos separados por um caractere de espaço (o valor padrão deOFS
).Para extrair os primeiros
$n
(ou até$n
) campos, preservando o espaço em branco entre eles, com GNUgrep
ou compatível, uma abordagem é usar:(cuidado, ele descarta linhas vazias)
Agora, observe que a saída desse
df
comando não segue um padrão que permita extrair dados de maneira confiável, pois os próprios valores dos campos podem conter espaços em branco. Veja, por exemplo, oMounted on
cabeçalho ou alguns dos pontos de montagem. Veja também como alguns dos campos são alinhados à esquerda e outros alinhados à direita. É muito difícil extrair campos nessa condição sem codificar as larguras dos campos (e usá-los,cut -c
por exemplo).Se puder, o melhor é dizer à ferramenta que produz a saída para imprimir apenas as colunas desejadas. Por exemplo, com a implementação GNU de
df
, você pode usar:E se você precisar pós-processar essa saída, procure opções para gerar a saída em um formato analisável. Pois
df
,-P
ajuda apenas um pouco,df
a saída de não é pós-processável de forma confiável.Se estiver no Linux,
findmnt
,lsblk
e GNUstat -f
podem gerar as mesmas informaçõesdf
de uma forma pós-processável (veja, por exemplo, a-J
opção Como processar JSON com strings contendo UTF-8 inválido e-c
forstat
)