discoball
discoball copied to clipboard
A simple stream filter to highlight patterns
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:
Installation
The easiest way to get discoball
is by using pip (or easy_install): $ pip install discoball
.