有没有什么方法可以通过 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
从我的评论转换而来。
结合使用grep
和awk
:
grep "Uptime" file1 | awk '$3 > 100 {print}'
查找“正常运行时间” file1
,然后查看第 3 列,如果大于 100 则打印。