Можно ли как-то выполнить поиск в файле данных о времени безотказной работы, превышающих 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.