色付きgrep

30分シリーズ、その25。

ファイル名の部分を赤く表示するgrep

$ pythno colorgrep.py 
hiki_fortune.py:#!/usr/bin/env python
wc.py:#!/usr/bin/env python

まず、color.pyを作る。

import sys
Normal=0
Black = 30
Red = 31
Green = 32
Brown = 33
Blue = 34
Purple = 35
Cyan = 36
LightGray = 37
 
def printc(msg,fg=Normal,bg=Normal):
    write(sys.stdout,str(msg)+"\n",fg,bg)
 
def write(io,msg,fg=Normal,bg=Normal):
    io.write("\x1b[%sm\x1b[%sm%s" % (fg,bg+10,msg))
 
if __name__ == '__main__':
    printc('hello',fg=Black,bg=Red)
    printc(10)

そしてcolorgrep.pyをば。

import color
import sys
import os
 
io = os.popen('grep ' + ' '.join(sys.argv[1:]))
for line in io:
    i = line.index(':')
    color.write(sys.stdout,line[0:i],fg=color.Red)
    color.write(sys.stdout,line[i:])
io.close()
  • ダメだ。今日はもう疲れた