Existe alguma maneira de pesquisar em um arquivo o tempo de atividade superior a 100 dias por meio de comandos Linux Bash?
Por exemplo, file1
conté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 awk
soluçã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 grep
soluçã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 100
seguida de Fim de linha.
Responder4
Convertendo do meu comentário.
Usando grep
e awk
juntos:
grep "Uptime" file1 | awk '$3 > 100 {print}'
Procure por "Uptime" file1
e depois observe a 3ª coluna e imprima se for maior que 100.