Иногда раскрашивание файла журнала или другого дает хороший обзор при поиске вещи и поведение
Я только что видел, что у grep есть функция раскраски
grep -C 99999 --color <regexp> <filename>
Какие еще есть методы?

Для поиска в исходном коде я использую подтверждать. У него есть много опций, которые имеют смысл для поиска кода (например, автоматическое игнорирование каталогов SCM).
Я удивлен, что сайт petdance.com заблокирован. Не могли бы вы рассказать мне еще почему?
Для тех, кому интересно, ack теперь размещен на github по адресу github.com/petdance/ack
Есть много программ, поддерживающих раскраску, например Цветной хвост
Может быть, это тоже может быть полезно: GenericColouriser
Мы используем голый хвост, теперь, если бы они добавили цвет к своему барегреп, это было бы неплохо.
Вот фрагмент инструмента для раскраски журналов, который я иногда использую.
Обратите внимание, что это работает только с stdin / stdout и в терминале, поддерживающем цвета ANSI.
#include <stdio.h>
#include <regex.h>
#define MAX_LINE 4096
#define RESET "3[0m"
#define BLACK "3[30m" /* Black */
#define RED "3[31m" /* Red */
#define GREEN "3[32m" /* Green */
#define YELLOW "3[33m" /* Yellow */
#define BLUE "3[34m" /* Blue */
#define MAGENTA "3[35m" /* Magenta */
#define CYAN "3[36m" /* Cyan */
#define WHITE "3[37m" /* White */
#define BOLDBLACK "3[1m3[30m" /* Bold Black */
#define BOLDRED "3[1m3[31m" /* Bold Red */
#define BOLDGREEN "3[1m3[32m" /* Bold Green */
#define BOLDYELLOW "3[1m3[33m" /* Bold Yellow */
#define BOLDBLUE "3[1m3[34m" /* Bold Blue */
#define BOLDMAGENTA "3[1m3[35m" /* Bold Magenta */
#define BOLDCYAN "3[1m3[36m" /* Bold Cyan */
#define BOLDWHITE "3[1m3[37m" /* Bold White */
static int selected_color = 0;
static char *colors[] = {
"-green", GREEN,
"-black", BLACK,
"-red", RED,
"-yellow", YELLOW,
"-blue", BLUE,
"-magenta", MAGENTA,
"-cyan", CYAN,
"-white", WHITE,
"-boldgreen", BOLDGREEN,
"-boldblack", BOLDBLACK,
"-boldred", BOLDRED,
"-boldyellow", BOLDYELLOW,
"-boldblue", BOLDBLUE,
"-boldmagenta", BOLDMAGENTA,
"-boldcyan", BOLDCYAN,
"-boldwhite", BOLDWHITE,
NULL
};
/*----------------------------------------------------------------------*/
int main(int argc, char *argv[]) {
char buf[MAX_LINE];
int has_re = 0;
regex_t re;
if (argc > 1) {
if (argc > 2) {
int idx = 0;
while (colors[idx*2]) {
if (!strcmp(colors[idx*2], argv[1])) {
selected_color = idx;
break;
}
idx++;
}
if (regcomp(&re, argv[2], REG_EXTENDED | REG_NEWLINE)) {
printf("regcomp() failed!\n");
return -1;
}
} else if (regcomp(&re, argv[1], REG_EXTENDED | REG_NEWLINE)) {
printf("regcomp() failed!\n");
return -1;
}
has_re = 1;
} else {
printf("Usage: %s [ -red | -blue | -cyan | -white | -black | "
"-yellow | -magenta ] <regexp>\n", argv[0]);
return -1;
}
while (fgets(buf, MAX_LINE, stdin) == buf) {
char *bbuf = buf;
while (1) {
if (has_re) {
regmatch_t match[10];
if (regexec(&re, bbuf, re.re_nsub + 1, match, 0)) {
printf("%s", bbuf);
break;
} else {
int i, idx;
for (i=idx=0; i<1; i++) {
if (match[0].rm_so < 0) {
break;
} else {
printf("%.*s",
(int)(match[i].rm_so-idx),
bbuf+idx);
printf( "%s%.*s" RESET,
colors[selected_color*2+1],
(int)(match[i].rm_eo-match[i].rm_so),
bbuf+(int)match[i].rm_so);
idx = match[i].rm_eo;
bbuf += idx;
}
}
}
}
fflush(stdout);
}
}
if (has_re) {
regfree(&re);
}
return 0;
}
Это более старый вопрос, но на случай, если кто-то все еще ищет, я недавно создал colorize, инструмент, который позволяет указывать либо фиксированные шаблоны, либо регулярные выражения для соответствия определенным цветам. Он работает из коробки с интуитивно понятным синтаксисом для указания выделения и docopt в качестве его единственной зависимости.
colorize.py -f 'This is an interesting line=Blue' -f 'Different topic=Red' Input.log
DOH - этот сайт забанен на нашем рабочем месте ... разве ты не любишь сетевых нянь ...