Как я добираюсь, grep раскрашивают имена файлов перед каждым соответствием?

Если я работаю 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 с ударом и xterm (и я попробовал xterm-цвет также).

5
задан 17.03.2011, 01:49

3 ответа

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

6
ответ дан 07.12.2019, 17:28

Необходимо было бы постобработать вывод. Что-то вроде этого могло бы работать:

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

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

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

1
ответ дан 07.12.2019, 17:28

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

http://betterthangrep.com/

0
ответ дан 07.12.2019, 17:28

Теги

Похожие вопросы