При использовании grep --color=always
я могу получить красивую подсветку цвета для совпадений регулярных выражений.
Однако grep
возвращает строки только с одним совпадением. Вместо этого я ищу способ просто выделить совпадения регулярных выражений, оставив только один другой вход, не отбрасывая строки без каких-либо совпадений.
Я попытался получить цвет, работающий с sed
, и прочитал документацию grep
, но я не могу получить то, что хочу.
Если мое описание не очевидно, я хочу:
INPUT:
- Фред
- Ted
- красный
- свинец
Regex:
- "* красный"
ВЫВОД:
- fred (красным)
- Ted
- красный (красный)
- свинец
Чтобы я мог:
list_stuff | color_grep "make_this_stand_out_but_dont_hide_the_rest"
EDIT:
Я нашел решение, которое не очень красивое, но оно работает:
Благодаря: http://www.pixelbeat.org/docs/terminal_colours/
В частности, script (который я модифицировал/упростил): 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"
}
Ищем более простой способ сделать это!