shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Comando GREP Coluna X Linha


From: Tiago Peczenyj
Subject: Re: [shell-script] Comando GREP Coluna X Linha
Date: Fri, 10 Jun 2016 09:50:45 +0200

Ola

Realmente, existem varias respostas.

vc pode procurar um numero entre 50 e 100 por expressões regulares, porém eu acho mais natural usar matematica para isso.

por exemplo, eu tenho

Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G  4.0K  3.9G   1% /dev
tmpfs           788M  1.4M  786M   1% /run
/dev/sda1       222G  121G   90G  58% /

e com um one-liner eu posso filtrar quais linhas tem a quinta coluna maior ou igual a 50

$ df -h | awk '$5 + 0 >= 50 {print "Status",$1,$5}'
Status /dev/sda1 58%

aqui eu usei dois truques:

1: uso da forma 'CONDICAO { BLOCO }' do awk

eu poderia colocar um if dentro do bloco que fazemos em 99% das vezes com awk. entretanto isso

awk '{ BLOCO }'

vai executar o bloco em todos as linhas, enquanto a forma 

awk 'CONDICAO { BLOCO }'

faz um primeiro filtro e deixa o codigo ligeiramente menor

2: coerção de string para numero

awk não tem tipos de variaveis no sentido de serem numeros ou strings. mas existem umas regras de contexto, por exemplo em uma operação numerica eu vou tentar converter a string para numero. nesse caso fazendo $5 + 0 eu estou forçando que "58%" vire 58 pois segundo as regras, se a string começar com um numero, o que não for pertinente sera ignorado. 

é bom observar esta regra com cuidado. não necessariamente vai funcionar sempre se o que vc esta lendo não for bem comportado ( no caso, o output do df não vai trazer maiores surpresas ,espero ).

Perceba que a primeira linha tem "Use%" e eu ignoro-a. eu poderia evitar essa comparação esdruxula olhando a partir da segunda linha porem o awk começa a ficar mais gordinho.

Abraços



2016-06-09 19:53 GMT+02:00 address@hidden [shell-script] <address@hidden>:
 

Boa tarde pessoal, tudo bem?


Estou com dificuldade para fazer um script shell para coletar o status do HD.  A idéia  é coletar a porcentagem de USO do disco e a partir disso fazer um IF -ge (maior ou igual) á 50 se for ele me traz um echo " Status HD $USO".  Abaixo segue um exemplo do comando que eu uso para saber as informações das partições.  


[root@localhost tmp]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2        59G  2.6G   53G   5% /

tmpfs           495M     0  495M   0% /dev/shm

/dev/sda1       291M   34M  243M  13% /boot



Desde já ficarei muito grato se puderem me ajudar.




--
Tiago B. Peczenyj

http://about.me/peczenyj

reply via email to

[Prev in Thread] Current Thread [Next in Thread]