есть ли colorgrep? (какой-нибудь)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

pelmen
Сообщения: 1268
ОС: debian

есть ли colorgrep?

Сообщение pelmen »

Есть ли что-нибудь типа grep, только выполняющая не вильтрацию, а подсвечивание ?
Т.е. есть текст, где в середине есть слово МАГАЗИН. Если сделать cat text|grep "МАГАЗИН", то выведется только необходимая строка. А я хотел бы чтобы вывелся весь текст, а слово (или вся строка) МАГАЗИН - другим цветом, например.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: есть ли colorgrep?

Сообщение drBatty »

pelmen писал(а):
17.02.2010 11:52
А я хотел бы чтобы вывелся весь текст, а слово (или вся строка) МАГАЗИН - другим цветом, например.

grep --color

ну и

sed 's/МАГАЗИН/\x1b[32;1m&\x1b[0m/g'

pelmen писал(а):
17.02.2010 11:52
а слово (или вся строка)

а хоть-бы и имя файла с номером строки.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: есть ли colorgrep?

Сообщение pelmen »

Отлично, но есть небольшая проблема. grep --color выделяет необходимое слово, но помимо этого он еще обрезает строки, не имеющие это слово. А мне хотелось бы сделать вывод текстового файла и подсветить СЛОВО. А получается, что выводятся лишь строки со словом СЛОВО, и СЛОВО выделено. Т.е. я хочу сделать файл text:
я пошел в магазин
мама пошла в магазин
я никуда не пошел

Код: Выделить всё

cat text|colorgrep магазин
я пошел в магазин
мама пошла в магазин
я никуда не пошел
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5403
ОС: Gentoo

Re: есть ли colorgrep?

Сообщение /dev/random »

grep --color '\(слово\)\?'
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: есть ли colorgrep?

Сообщение pelmen »

/dev/random писал(а):
17.02.2010 12:41
grep --color '\(слово\)\?'
Спасибо, сработало!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: есть ли colorgrep?

Сообщение drBatty »

pelmen писал(а):
17.02.2010 12:31
Отлично, но есть небольшая проблема. grep --color выделяет необходимое слово, но помимо этого он еще обрезает строки, не имеющие это слово. А мне хотелось бы сделать вывод текстового файла и подсветить СЛОВО. А получается, что выводятся лишь строки со словом СЛОВО, и СЛОВО выделено. Т.е. я хочу сделать файл text:

а зачем я вам вторую строчку с sed дал?

pelmen писал(а):
17.02.2010 12:44
Спасибо, сработало!

а вы поняли ЧТО сработало?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: есть ли colorgrep?

Сообщение pelmen »

sed-ом пользоваться не умаю. Мне показалось, что вы дали 2 варианта решения (либо так либо сяк), а оно вон оно как :)
Я не очень люблю решения на sed, т.к. для меня они кажутся не очевидными (нечитаемыми?)
\x1b[32;1m&\x1b[0m/g
Прошу прощения, если чем-то обидел :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: есть ли colorgrep?

Сообщение drBatty »

pelmen писал(а):
17.02.2010 12:58
sed-ом пользоваться не умаю. Мне показалось, что вы дали 2 варианта решения (либо так либо сяк), а оно вон оно как smile.gif
Я не очень люблю решения на sed, т.к. для меня они кажутся не очевидными (нечитаемыми?)

в данном случае решение вполне читаемое: просто коды для выделения цветом такие. они не в sed такие, они во всём терминале такие кривые. Попробуйте скажем echo -e "\x1b[33;1m"
вернутся назад можно echo -e "\x1b[0m"

PS: ИМХО это решение от /dev/random совершенно нечитаемое ;) Он использовал группировку с квантификатором, что не слишком понятно... А я просто нашёл слово и его раскрасил :)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: есть ли colorgrep?

Сообщение t.t »

/dev/random писал(а):
17.02.2010 12:41
grep --color '\(слово\)\?'
Тогда уж egrep --color '(слово)?'
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: есть ли colorgrep?

Сообщение drBatty »

t.t писал(а):
17.02.2010 13:52
Тогда уж egrep --color '(слово)?'

может быть это и более читаемо, но так-же непонятно. ИМХО. особенно в случае grep.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: есть ли colorgrep?

Сообщение sash-kan »

pelmen
как-нибудь на досуге можете поиграться с supercat-ом:

Shell

$ apt-cache show supercat | sed -n '/Descr/,$p' Description: program that colorizes text for terminals and HTML Supercat is a program that colorizes text based on matching regular expressions/strings/characters. Supercat supports html output as well as standard ASCII text. Unlike some text-colorizing programs that exist, Supercat does not require you to have to be a programmer to make colorization rules. Homepage: http://supercat.nosredna.net/ Tag: implemented-in::c, interface::text-mode, use::text-formatting, works-with::text, works-with-format::html, works-with-format::plaintext $ spc -t c /usr/src/linux-source-2.6.26/usr/gen_init_cpio.c <красиво раскрашенный код на c>

p.s. найден пакет просмотром выдачи команды
$ apt-cache search colorize
да, много чего есть в debian gnu/linux.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: