打印出 2 个单词在系统日志中出现的次数。但也要告诉我每小时出现多少次

打印出 2 个单词在系统日志中出现的次数。但也要告诉我每小时出现多少次

因此,我尝试创建一个 bash 脚本,用于在我的 syslog 文件中查找两个单词。然后,我希望该脚本打印出这两个单词出现的次数。我还希望它打印出一天中每个小时的次数。例如,如果单词 dog 在今天的第一个小时内出现了 4 次,则显示“Hour one, dog 4”。最后,在脚本的末尾,我希望它打印出这些单词在一天中出现的次数。

我目前拥有的 sudo 代码是

if 2 > hour
find permit
find block
print both
finish

if 1 < hour < 2
find permit
find block
print both
finish

if 2 < hour < 3
find permit
find block
print both
finish

命令是 grep -o "\WORD\" Syslog.txt * | sort | uniq -c

答案1

以下是一些不太伪的代码。我还没有测试过,所以可能根本不起作用,但我可以从这里开始。

function findprint {
    local word1 = $(echo $1 | grep -o "\WORD1\" | wc -w)
    local word2 = $(echo $1 | grep -o "\WORD2\" | wc -w)
    word1total=$[word1total+word1]
    word2total=$[word2total+word2]
    echo "$word1 WORD1"
    echo "$word2 WORD2"
}
word1total = 0;
word2total = 0;
while read line; do
    if [ hour -lt 2 ]; then
        echo "Hour 1"
        findprint "$line"
    fi

    if [ hour -gt 1 && hour -lt 2 ]; then
        echo "Hour 2"
        findprint "$line"
    fi

    if [ hour -gt 2 && hour -lt 3 ]; then
        echo "Hour 3"
        findprint "$line"
    fi
done < /var/log/syslog

echo "TOTAL:"
echo "$word1total WORD1"
echo "$word2total WORD2"

相关内容