Команда, которая выделяет регулярные выражения в тексте?

Команда, которая выделяет регулярные выражения в тексте?

Есть ли команда, которая выделяет определенное выражение в тексте?

Я ищу что-то вроде функции «поиска» в less, но с обычным выводом текста на stdout, а не в средство lessпросмотра.

Пример:

$ cat test.txt | highlight "an"

Перспективы дляаорганизованный вывод войск НАТО из Афганистанааистапотерпели две неудачи, когда президент Хамид Карзай демократавведенные ограничения на войска Соединенных Штатоваг Талибаостановил мирные переговоры.

Он может использовать цвет или любые другие средства для выделения указанного регулярного выражения.

решение1

Не уверен, связано ли это с какой-то особенностью или это просто какой-то скрытый побочный эффект, но это работает в GNU grep2.11:

grep --color 'an\|' test.txt

решение2

аккесть --passthruопция, которая сделает это:

ack --passthru an test.txt
some_command | ack --passthru an -

решение3

Вы можете попробовать этот мой скрипт. Он позволит вам указать файл или использовать стандартный ввод. Вы можете определить регулярное выражение Python для текста, который вы хотите выделить. выделенный текст по умолчанию имеет неоново-зеленый цвет (эй, я использую черный фон!) Но вы можете изменитьЦветовой код ANSI.

#!/usr/bin/env python

import sys
import re

def highlight_text(text,pat):
    def replacement_funk(matchobj):  return '\x1b[42m%s\x1b[0m'%matchobj.group(0)
    return re.sub(pat,replacement_funk,text)

if __name__ == '__main__':
    if len(sys.argv) == 2:
        input = sys.stdin
        pat = sys.argv[1]
    elif len(sys.argv) == 3:
        input = open(sys.argv[2])
        pat = sys.argv[1]
    else:
        sys.stderr.write("colorme pattern [inputfile]")
    text = input.read()
    print highlight_text(text,pat)

Вотапример.

blessburn@blessburn:/tmp$ cat test.txt | ./colorme.py an

Перспективы дляаорганизованный вывод войск НАТО из Афганистанааистапотерпели две неудачи, когда президент Хамид Карзай демократавведенные ограничения на войска Соединенных Штатоваг Талибаостановил мирные переговоры.

blessburn@blessburn:/tmp$ ./colorme.py '(Af.*? |NA[\w]{2})' test.txt

Перспективы упорядоченногоНАТОвыход изАфганистанпотерпели две неудачи: президент Хамид Карзай потребовал ограничить присутствие войск США, а Талибан прекратил мирные переговоры.

решение4

$cat test.txt | grep --colour=auto -C 100000 an

"color" тоже работает. Вы также можете определить псевдоним, чтобы grep всегда использовал опцию:

alias grep='grep --colour=auto -C 100000'

Поместите указанное выше в /etc/profile.d/ или в ваш .bashrc или куда-нибудь еще.

Связанный контент