Existe alguma maneira de pesquisar em um arquivo o tempo de atividade superior a 100 dias?

Existe alguma maneira de pesquisar em um arquivo o tempo de atividade superior a 100 dias?

Existe alguma maneira de pesquisar em um arquivo o tempo de atividade superior a 100 dias por meio de comandos Linux Bash?

Por exemplo, file1contém:

Uptime is 172 days

Uptime is 562 days

Uptime is 30 days

downtime is 197 days

Qual comando posso usar para obter uma saída como:

Uptime is 172 days

Uptime is 562 days

Responder1

Aqui está uma awksolução simples:

awk '$1 == "Uptime" && $3 > 100 {print}' file1
Uptime is 172 days
Uptime is 562 days

Responder2

bash... e uma solução um pouco mais complexa :

while read -r a b c d; do
   [[ $a = Uptime && $c -gt 100 ]] && printf '%s %s %s %s\n' $a $b $c $d
done < uptime
Uptime is 172 days
Uptime is 562 days

Responder3

E uma grepsolução, usando Extended Regexps:

grep -E 'Uptime is [[:digit:]]{3}' uptime | \
  grep -Ev 'Uptime is 100'

Isso encontrará a string "Uptime is", seguida por pelo menos 3 dígitos, e descartará a exata 100seguida de Fim de linha.

Responder4

Convertendo do meu comentário.

Usando grepe awkjuntos:

grep "Uptime" file1 | awk '$3 > 100 {print}'

Procure por "Uptime" file1e depois observe a 3ª coluna e imprima se for maior que 100.

informação relacionada