¿Hay alguna forma de buscar en un archivo un tiempo de actividad superior a 100 días?

¿Hay alguna forma de buscar en un archivo un tiempo de actividad superior a 100 días?

¿Hay alguna forma de buscar en un archivo un tiempo de actividad superior a 100 días mediante comandos de Linux Bash?

Por ejemplo, file1contiene:

Uptime is 172 days

Uptime is 562 days

Uptime is 30 days

downtime is 197 days

¿Qué comando puedo usar para obtener un resultado como:

Uptime is 172 days

Uptime is 562 days

Respuesta1

Aquí hay una awksolución simple:

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

Respuesta2

...y una bashsolución un poco más compleja:

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

Respuesta3

Y una grepsolución, usando expresiones regulares extendidas:

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

Esto encontrará la cadena "El tiempo de actividad es", seguida de al menos 3 dígitos, y descartará el exacto 100seguido de Fin de línea.

Respuesta4

Convirtiendo de mi comentario.

Usando grepy awkjuntos:

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

Busque "Tiempo de actividad" file1y luego mire la tercera columna e imprima si es mayor que 100.

información relacionada