An Output Highlighter
I wrote something like this some time ago, but this version is much better, if only because it's in python. Basically, it's a script that highlights standard input based on arguments passed to it.
But how is that useful? Well imagine that you've dumped the contents of a file to standard output, maybe even piped it through grep, and/or sed etc. Oftentimes you're still left with a lot of text and it's hard to find what you're looking for. If only there was a way to highlight arbitrary portions of the text with some colour...
Here's what you do:
$ cat somefile | highlight.py some strings
You'll be presented with the same body of text, but with the word "some" highlighted everywhere in light blue and "strings" highlighted in light green. The script can support up to nine arguments which will show up in different colours. I hope someone finds it useful.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys,re
colours = [
"\033[1;34m", # light blue
"\033[1;32m", # light green
"\033[1;36m", # light cyan
"\033[1;31m", # light red
"\033[1;33m", # yellow
"\033[0;32m", # green
"\033[0;36m", # cyan
"\033[0;33m", # brown
"\033[1;35m", # pink
"\033[0m" # none
]
args = sys.argv[1:]
# Strip out arguments exceeding the maximum
if len(args) > 9:
print("\n%sWARNING: This script only allows for a maximum of 9 arguments.%s\n\n" % (colours[4], colours[9]), file=sys.stderr)
args = args[0:8]
while True:
line = sys.stdin.readline()
colour = 0
for arg in args:
line = re.sub(
r"(%s)" % (arg),
"%s%s%s" % (colours[colour], "\g<1>", colours[9]),
line
)
colour = colour + 1
if line == '':
break
try:
print(line.rstrip("\n"))
except:
pass
Comments
Post a Comment of Your Own
Preview