计算文件中出现的次数。条件模式匹配

时间:2016-12-23 22:12:59

标签: bash shell design-patterns grep matching

很抱歉,如果标题没有说清楚。

我有一个文件每15分钟读一次,并在其中找到一个特定的模式(例如超时)。文件没有任何固定的更新频率。

预期结果: - 1.如果在15分钟内找到3次模式,则运行command1。 2.如果在15分钟内找到5次模式,请运行command2。

每次检查从最后读取位置读取的文件。

谢谢, GRV

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用cron作业。它比其他解决方案更复杂,但它非常可靠(即使你的“检查脚本”崩溃,它会在经过一段时间后由cron再次调用)。 cron可以是:

*/15 * * * * env DISPLAY=:0 /folder/checkscript >/dev/null 2>&1

在您的情况下可能不需要env DISPLAY=:0,或者可能需要$DISPLAY,具体取决于您的脚本(注意:您可能需要根据您的情况进行调整,运行echo "checkscript"以查找你在案件上的变量。)

您的#!/bin/bash if [ -f /tmp/checkVarCount ]; then oldCheckVar="$(cat /tmp/checkVarCount)"; else oldCheckVar="0"; fi checkVar="$(grep -o "pattern" /folder/file | wc -l)" echo "$checkVar" > /tmp/checkVarCount checkVar="$(($checkVar-$oldCheckVar))" if [ "$checkVar" -eq 3 ]; then command1; fi if [ "$checkVar" -eq 5 ]; then command2; fi exit 可能是:

if [ "$checkVar" -ge 3 ] && [ "$checkVar" -lt 5 ]; then command1; fi
if [ "$checkVar" -ge 5 ]; then command2; fi

它不包含在您的问题中,但如果您想要运行命令,如果找到模式4次或7次,那么您可以将上面的相关部分更改为:

std::cout << 2 * a << "\n"; //Unix style line break