2

Есть ли инструмент, который позволит мне передать через него вывод исполняемого файла и воспроизвести звук, или, что еще лучше, выделить строку, где встречается выбранная фраза?

Я хочу быть в состоянии сделать что-то вроде этого:

./myProgWithLotsOfOutput  | ./myMysteryTool blahUsefulWord

и все выходные данные появляются и прокручиваются, но каждый раз, когда появляется "blahUsefulWord", консоль подает звуковой сигнал и выделяет эту строку.

Это своего рода смесь чая и чая. Кроме того, у вас есть навыки BASH, чтобы взбить что-то вроде этого?

4 ответа4

2

Для Bash> = версия 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 $'\07'"$highlight"
    echo "$line$off"
done

Это подчеркивает всю линию, а не только матч.

1

Основываясь на этих вопросах и ответах, я создал следующую функцию:

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

Примеры использования:

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

Никаких звуковых сигналов в этом примере, но я уверен, что это можно добавить, изменив grep как показано в других ответах на этой странице.

0

Что-то вроде logwatch может быть тем, что вы ищете.

0

Моя ошибка в ответе. Я попробовал это:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .