Existe uma ferramenta que apita e realça as linhas correspondentes que são canalizadas através dele, enquanto exibe tudo

2

Existe uma ferramenta que me permita enviar a saída de um executável através dele e tocar um som ou, melhor ainda, destacar a linha onde uma frase selecionada ocorre?

Eu quero ser capaz de fazer algo assim:

./myProgWithLotsOfOutput  | ./myMysteryTool blahUsefulWord

e tem toda a saída aparecer e rolar, mas a qualquer momento aparece "blahUsefulWord", o console apita e realça essa linha.

É uma mistura de tee e grep . Alternativamente, você tem as habilidades BASH para agitar algo assim?

    
por scompt.com 13.08.2010 / 17:26

4 respostas

2

Para Bash > = versão 3.2:

regex='some regex pattern'
highlight=$(tput setaf 2) # green, use setab to do inverse instead of foreground
off=$(tput sgr0)
while read line
do
    [[ $line =~ $regex ]] && echo -n $''"$highlight"
    echo "$line$off"
done

Destaca toda a linha e não apenas a correspondência.

    
por 13.08.2010 / 18:57
1

Com base nesse Perguntas e respostas , criei a seguinte função:

# mylite since 'highlight' is already a program
function mylite () {
    pattern=$1; shift; file=$1
    grep -E --color "$pattern|$" $file
}

Exemplos de uso:

mylite pattern file.txt
cat file.txt | mylite pattern

Não bipe neste exemplo, mas tenho certeza de que isso pode ser adicionado modificando grep conforme mostrado por outras respostas nesta página.

    
por 04.02.2011 / 08:26
0

Meu erro na resposta. Eu tentei isso:

PATTERN="something"
export GREP_COLOR='1;37;41' # set to a sequence of xterm escape sequences for colorization.
export GREP_OPTIONS=--color=always

while read LINE
do
    echo $LINE | grep $PATTERN || echo $LINE
done
    
por 13.08.2010 / 17:33
0

Algo como o logwatch pode ser o que você está procurando.

    
por 14.08.2010 / 00:35