¿Hay alguna forma de buscar en un archivo un tiempo de actividad superior a 100 días mediante comandos de Linux Bash?
Por ejemplo, file1
contiene:
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 awk
solución simple:
awk '$1 == "Uptime" && $3 > 100 {print}' file1
Uptime is 172 days
Uptime is 562 days
Respuesta2
...y una bash
solució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 grep
solució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 100
seguido de Fin de línea.
Respuesta4
Convirtiendo de mi comentario.
Usando grep
y awk
juntos:
grep "Uptime" file1 | awk '$3 > 100 {print}'
Busque "Tiempo de actividad" file1
y luego mire la tercera columna e imprima si es mayor que 100.