tarefas simples com grep, sed e similares

1

A saída de du -sh folder é alguma dimensão e pasta; Como posso usar grep -o '*G' e semelhante a apenas obter a dimensão, ou seja, se livrar do nome da pasta?

    
por jj_p 05.03.2018 / 15:49

2 respostas

7

Eu posso oferecer uma solução simples de cut :

du -sh . | cut -f1

O delimitador padrão em cut é a guia, portanto, não há necessidade de opções adicionais. Simplesmente imprima o campo 1.

Do seu comentário, parece que você está preocupado com recursos / velocidade, para citar Gilles a partir de outra resposta:

"Generally speaking, the more specialized a tool is, the faster it is. So in most cases, you can expect cut and grep to be faster than sed, and sed to be faster than awk."

Citado de aqui

A saída de time para os dois comandos mostra:

time du -sh /folder | awk '{print $1}'
60K

real    0m0.005s
user    0m0.002s
sys     0m0.004s

time du -sh /folder | cut -f1
60k

real    0m0.003s
user    0m0.000s
sys     0m0.004s

Eu acredito que você precisaria repetir isso várias vezes, e pegar a média para fazer um teste justo, mas de qualquer forma, não muito nisso. Tecnicamente, o corte deve ser "mais rápido".

    
por 05.03.2018 / 16:31
3

Você pode usar o awk para imprimir apenas a primeira coluna:

du -sh folder | awk '{print $1}'

Para o arquivo, também usando o awk:

awk '!($3="")' file
    
por 05.03.2018 / 15:52