Question

Sometimes coloring a logfile or other gives a good overview when looking for stuff and behaviors

I just saw that grep have a coloring feature

grep -C 99999 --color <regexp> <filename>

What other methods are there?

Was it helpful?

Solution

For searching source code, I use ack. It's got a lot of options that make sense for searching code (such as automatically ignoring SCM directories).

OTHER TIPS

Here is a snippet for a log coloring tool I sometimes use.

Note that is only works against stdin/stdout and in a terminal supporting ANSI colors.

#include <stdio.h>
#include <regex.h>

#define MAX_LINE 4096

#define RESET   "\033[0m"
#define BLACK   "\033[30m"      /* Black */
#define RED     "\033[31m"      /* Red */
#define GREEN   "\033[32m"      /* Green */
#define YELLOW  "\033[33m"      /* Yellow */
#define BLUE    "\033[34m"      /* Blue */
#define MAGENTA "\033[35m"      /* Magenta */
#define CYAN    "\033[36m"      /* Cyan */
#define WHITE   "\033[37m"      /* White */
#define BOLDBLACK   "\033[1m\033[30m"      /* Bold Black */
#define BOLDRED     "\033[1m\033[31m"      /* Bold Red */
#define BOLDGREEN   "\033[1m\033[32m"      /* Bold Green */
#define BOLDYELLOW  "\033[1m\033[33m"      /* Bold Yellow */
#define BOLDBLUE    "\033[1m\033[34m"      /* Bold Blue */
#define BOLDMAGENTA "\033[1m\033[35m"      /* Bold Magenta */
#define BOLDCYAN    "\033[1m\033[36m"      /* Bold Cyan */
#define BOLDWHITE   "\033[1m\033[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;
}

There are many programs that support coloring like Colortail

Maybe this can be helpful too: GenericColouriser

We use baretail, now if they added color to their baregrep, that would be nice.

This is an older question, but in case anyone is still looking, I recently created colorize, a tool which allows one to specify either fixed patterns or regular expressions to match with specific colors. It works out of the box with an intuitive syntax for specifying highlighting, and docopt as its only dependency.

colorize.py -f 'This is an interesting line=Blue' -f 'Different topic=Red' Input.log
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top