Похоже, ваш синтаксис не совсем подходит для ksh, и вы используете синтаксис egrep для grep.
Я считаю, что это даст то, что вам нужно:
#!/bin/ksh
TOM1=/ap/mvr/servers/tomcat1/logs/
TOM2=/ap/mvr/servers/tomcat2/logs/
find $TOM1 $TOM2 -type f -name "mvr-gateway.log" |
while read file
do
LOGERRORS=$(egrep -B2 -A3 'WARN|ERROR|CRIT' $file)
if [[ ! -z $LOGERRORS ]]
then
echo "Errors in $file: $LOGERRORS" >> LogErrors.txt
fi
done
А покаВы можете захотеть прочитать в каждой строке вывод egrep
с другим while read linein
(с выводом по каналу egrep
).