Filtrando o conteúdo da saída do df

0

Eu tenho o comando abaixo para obter o uso do sistema de arquivos em um servidor:

df -k | awk '{print $5 " " $6}' | grep %

Quando executados, os seguintes são os resultados:

97% /
0% /proc
0% /etc/mnttab
0% /dev/fd
46% /var
1% /var/run
1% /tmp
54% /opt/app/oracle
22% /opt/app/proviso

Minha pergunta é: como posso fazer com que a linha contendo 97% / desapareça?

    
por JPenaranda 11.02.2016 / 11:31

3 respostas

1

Você pode fazer a filtragem e a remoção com awk :

df -k | awk '/%/ && NR > 2 {print $5 " " $6}'

/%/ faz o mesmo trabalho que grep % .

NR > 2 filtra o rótulo e / linhas.

    
por 11.02.2016 / 11:42
0

Você pode remover a primeira linha com a cauda:

df -k | awk '{print $5 " " $6}' | grep % | tail --lines +2

+2 significa que você deseja imprimir todas as linhas começando com a linha 2.

    
por 11.02.2016 / 11:35
0

Você ficará bem até que df retorne algo assim:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/rootvg-lv_root
                  367G  246G  103G  71% /
tmpfs                  48G     0   48G   0% /dev/shm

Isso obviamente quebrou seu script / comando. Então, eu recomendo que você sempre aplique o comando -P ao comando df em seus scripts .
Em relação à sua questão inicial, eu faria isso com regex simples

df -Ph  |awk '{if($6 ~ /^\/.+/) print $5, $6}'
    
por 11.02.2016 / 11:45

Tags