Я отслеживаю из активно записанного в файл:
Мое текущее решение:
ws_trans=0
sc_trans=0
tail -F /var/log/file.log | \
while read LINE
echo $LINE | grep -q -e "enterpriseID:"
if [ $? = 0 ]
then
((ws_trans++))
fi
echo $LINE | grep -q -e "sc_ID:"
if [ $? = 0 ]
then
((sc_trans++))
fi
printf "\r WSTRANS: $ws_trans \t\t SCTRANS: $sc_trans"
done
Однако при попытке сделать это с AWK я не получаю вывод - $ws_trans
и $sc_trans
остаются 0
ws_trans=0
sc_trans=0
tail -F /var/log/file.log | \
while read LINE
echo $LINE | awk '/enterpriseID:/ {++ws_trans} END {print | ws_trans}'
echo $LINE | awk '/sc_ID:/ {++sc_trans} END {print | sc_trans}'
printf "\r WSTRANS: $ws_trans \t\t SCTRANS: $sc_trans"
done
Попытка сделать это, чтобы уменьшить нагрузку. Я понимаю, что AWK не имеет дело с переменными bash, и это может привести к путанице, но единственная ссылка, которую я нашел, - это не хвостовое приложение AWK.
Как я могу назначить переменную AWK bash ws_trans
и sc_trans
? Есть ли лучшее решение? (Отслеживаются и другие поисковые запросы.)