因此,我尝试创建一个 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"