Grep apenas uma palavra não é uma string inteira [duplicada]

2

Estou escrevendo um script simples para monitorar o espaço em disco na partição / e quero apenas números na minha saída.

tabbi@tabbi:~/scripts$ df -h / 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       234G  7,6G  214G   4% /

Digamos que eu queira remover o% da coluna "Usar" (ou removê-lo em todos os lugares); quando eu uso df -h / | grep -v '%' nada é impresso.

Como posso excluir o símbolo% da minha saída?

    
por Gregory Fisher 09.03.2018 / 12:53

2 respostas

4

grep -v remove qualquer linha que corresponda ao dada string; Portanto, no seu caso, qualquer linha contendo "%" é excluída em sua totalidade.

Para remover apenas o caractere, use tr :

df -h / | tr -d %
    
por 09.03.2018 / 12:56
1

Você pode obter o uso do diretório /, sem "%", com awk . Basicamente, o awk no seguinte comando:

  • Seleciona a última linha de saída, para considerar o cabeçalho df - END;
  • exclui "%";
  • exibe o campo fifth (print $ 5).

    df -h / | awk '  END { gsub("%",""); print $5 } '
    

Executando:

$ df -h / | awk '  END { gsub("%",""); print $5 } '
4

Ou para obter todos os números:

$ df -h / | awk '  END { gsub("%",""); gsub("G",""); print $2" "$3" "$4" "$5 } '
234 7,6 214 4
    
por 09.03.2018 / 13:08