Поэтому я пытаюсь создать bash-скрипт, который ищет два слова в моем файле системного журнала. Затем я хочу, чтобы сценарий распечатал, сколько раз эти два слова появились. Также я хочу, чтобы это распечатывало каждый час дня. Например, если слово «собака» появлялось 4 раза в течение первого часа сегодняшнего дня, оно говорит «Час первый», «Собака 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 * | сортировать | uniq -c
Здесь немного менее - псевдо код. Я не протестировал его так, это не может работать вообще, но это - где я мог бы запустить.
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"