Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A simple stream filter to highlight patterns

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 scripts
Octocat-spinner-32 test
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README.md
Octocat-spinner-32 discoball.py
Octocat-spinner-32 setup.py
README.md

discoball

discoball is a tool to filter streams and colorize patterns. It functions somewhat like egrep --color, except that it can highlight multiple patterns (in different colors). Patterns are arbitrary ruby regexes that are matched against the entire line.

Usage

$ discoball [options] <pattern1 pattern2 ...>

where options are:

  • --group-colors or -g: Color all matches of the same pattern with the same color
  • --one-color or -o: Highlight all matches with a single color
  • --match-any or -m: Only print lines matching an input pattern
  • --match-all or -a: Only print lines matching all input patterns
  • --help or -h: Print the help message

Examples

  • Highlight instances of "foo" and "bar" in the text of myfile.txt:

    $ cat myfile.txt | discoball foo bar
    
  • Highlight paths of processes running out of /usr/sbin/:

    $ ps -ef | discoball --one-color --match-any '/usr/sbin/.*$'
    
  • I wrote discoball for use with Steve Losh's todo-list tool, t. I put tags on my tasks annotated with + (inspired by Todo.txt):

    $ t Make an appointment with the dentist +health
    

    When I list my tasks (using t), I use discoball to highlight the tags with different colors:

    $ t | discoball '\+\S+'
    

    I can even do some fancier stuff to list particular labels. I have the following function defined in my .bashrc:

    function tl() {
      if [ -z  "$1" ]; then
        t | discoball '\+\S+'
      else
        t | discoball -a "${@/#/\+}"
      fi
    }
    

    I can use this as follows:

    $ tl               # ~> Show the list of tasks, with tags highlighted
    $ tl health urgent # ~> Show only tasks tagged with 'health' and 'urgent'
    

    Demo:

    Discoball + t demo

Installation

The easiest way to get discoball is by using pip (or easy_install): $ pip install discoball.

Something went wrong with that request. Please try again.