Можно ли как-то выполнить поиск в файле данных о времени безотказной работы, превышающем 100 дней?

Можно ли как-то выполнить поиск в файле данных о времени безотказной работы, превышающем 100 дней?

Можно ли как-то выполнить поиск в файле данных о времени безотказной работы, превышающих 100 дней, с помощью команд Linux Bash?

Например, file1содержит:

Uptime is 172 days

Uptime is 562 days

Uptime is 30 days

downtime is 197 days

Какую команду я могу использовать, чтобы получить вывод вроде:

Uptime is 172 days

Uptime is 562 days

решение1

Вот простое awkрешение:

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

решение2

...и немного более сложное bashрешение:

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

решение3

И grepрешение с использованием расширенных регулярных выражений:

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

Это позволит найти строку «Uptime is», за которой следуют не менее 3 цифр, и отбросить точное значение, 100за которым следует End-of-line.

решение4

Конвертирую из своего комментария.

Используя grepи awkвместе:

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

Найдите «Время безотказной работы», file1а затем посмотрите на 3-й столбец и выведите его, если оно больше 100.

Связанный контент