5

Если я запустил grep -ir "somethingtomatch" . из текущего каталога я обычно получаю такие результаты:

./some/path/file1.html: filecontent filecontent keyword filecontent
./some/path/file2.html: filecontent filecontent filecontent keyword
./some/path/file3.html: filecontent keyword filecontent filecontent
./some/path/file4.html: keyword filecontent filecontent filecontent

Я использовал grep --color=auto -ir 'somethingtomatch" . но он выделяет только ключевые слова белым цветом на красной подсветке. Я пытаюсь получить имена файлов слева с цветовой кодировкой тоже. Как я могу это сделать?

Я использую Terminal.app в OS X с bash и xterm (и я тоже пробовал xterm-color).

3 ответа3

6

Вы можете изменить цвета с помощью переменной среды $ GREP_COLORS. В вашем случае вы можете попробовать export GREP_COLORS='fn=1;32' чтобы изменить цвет имени файла на зеленый.

1

Вы можете использовать ack, который позволяет вам устанавливать переменные окружения для имени файла, номера строки и самого соответствия.

http://betterthangrep.com/

0

Вы должны постобработать вывод. Нечто подобное может работать:

$ grep --color -ir 'pattern' files | perl -pe 's/^([^:]+):/chomp(my $f = `ls --color \Q$1`); $f/e'

(Я предполагаю, что вы отображаете вывод из системы Linux, так как OSX ls не использует цвета для этой цели.)

(Примечание: различие между этим ответом и ответом $GREP_COLORS заключается в том, что последний использует фиксированный цвет, в то время как мой запрашивает ls --color .)

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