Фильтрация файла журнала по ключевому слову и раскраска вывода

Я написал скрипт bash, который использует sed для создания команды, которая фильтрует текст по ключевым словам и затем окрашивает вывод. Я сделал много проб и ошибок, и прибегая к помощи методов. Я знаю, что это можно улучшить. Кто-нибудь может предложить предложения?

Я бы тоже хотел использовать это как хвост - фильтровать и выводить цвет хвоста в режиме реального времени. Какие-нибудь мысли?

Заранее спасибо!

function multigrep(){

#THIS WORKS - Recreate this, using input parameters
#sed -En '/(App)|(Spe)/p' ./flashlog.txt;

filename="/Users/stevewarren/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt";
paramString="";

for element in "$@"
    do
        #echo $element;
        paramString="$paramString($element)|";
    done

#TRIM FINAL | OFF PARAMSTRING
paramString=${paramString:0:${#paramString}-1};

#CREATE SED EXPRESSION - '/($1)|($2)|(...)/p'
paramString="'/$paramString/p'";

#CREATE SED FUNCTION, CALL ON FILE
paramString="sed -En $paramString ./flashlog.txt"

echo $paramString;
echo "${txtbld}$(tput setaf 7)" > ./flashlog_output.txt;
eval $paramString >> ./flashlog_output.txt;
echo >> ./flashlog_output.txt;
#cat ./flashlog_output.txt;

cat ./flashlog_output.txt | while read LINE
do

    [[  $1 && ${1-x} ]] && 
        if grep -q $1 <<<$LINE; then
            echo "$(tput setaf 3)$LINE"
        fi

    [[  $2 && ${2-x} ]] && 
        if grep -q $2 <<<$LINE; then
            echo "$(tput setaf 7)$LINE"
        fi


    [[  $3 && ${3-x} ]] && 
        if grep -q $3 <<<$LINE; then
            echo "$(tput setaf 6)$LINE"
        fi

done

}

1 ответ

Решение

Вы знаете о цветном хвосте? Я тоже этим пользуюсь. Вы можете настроить цветность с помощью регулярных выражений в файле конфигурации. Вывод будет выглядеть так: (ага!:)

Другие вопросы по тегам