При использовании grep --color=always
я могу получить красивую цветную подсветку для совпадений регулярных выражений.
Однако grep
возвращает только строки, по крайней мере, с одним соответствием. Вместо этого я ищу способ просто выделить совпадения с регулярным выражением, оставляя все остальные входные данные в покое, не отбрасывая строки без совпадений.
Я пытался заставить цвета работать с sed
, и прочитал документацию grep
, но я не могу получить то, что хочу.
Если мое описание не очевидно, я хочу:
INPUT:
- Фреда
- 1018 * Ted *
- красный
- свинец
Regex:
ВЫВОД:
- Фред (в красном)
- 1036 * Ted *
- красный (красный)
- свинец
Чтобы я мог сделать:
list_stuff | color_grep "make_this_stand_out_but_dont_hide_the_rest"
EDIT:
Я нашел решение, которое не очень красиво, но работает:
Благодаря:
http://www.pixelbeat.org/docs/terminal_colours/
В частности, скрипт (который я модифицировал / упростил):
http://www.pixelbeat.org/talks/iitui/sedgrep
function sedgrep ()
{
C_PATT=`echo -e '\033[33;01m'`
C_NORM=`echo -e '\033[m'`
sed -s "s/$1/${C_PATT}&${C_NORM}/gi"
}
Все еще ищем более простой способ сделать это!