有什么方法可以在文件中搜索超过 100 天的正常运行时间?

有什么方法可以在文件中搜索超过 100 天的正常运行时间?

有没有什么方法可以通过 Linux Bash 命令在文件中搜索大于 100 天的正常运行时间?

例如,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后跟行尾的精确数字。

答案4

从我的评论转换而来。

结合使用grepawk

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

查找“正常运行时间” file1,然后查看第 3 列,如果大于 100 则打印。

相关内容