Linux 下的 grep 指令可以搜尋檔案或 Pipe 輸入的內容,以下是在 Python 要實現 grep 基本搜尋功能的寫法:
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/usr/bin/python sub_str = 'admin' ### read file content fp = open('/var/log/nginx/access.log', 'r') for line in fp: if line.count(sub_str) > 0: print line.rstrip() fp.close() |
以上程式會搜尋 /var/log/nginx/access.log 檔案內,包括 “admin” 的行並印出。
註:由於 WordPress 及 Crayon Syntax Highlighter 相容性問題 如果複製上面的程式碼,第 9 行的 “>” 是全形字符,需要自行改成普通的 “>”
如果將程式改寫一下,可以將程式碼寫入 function,及將搜尋的字串變成紅色:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/usr/bin/python def grep(sub_str, file): red_start = '\033[1;31m' red_end = '\033[1;m' ### read file content fp = open(file, 'r') for line in fp: if line.count(sub_str) > 0: line = line.rstrip() print line.replace(sub_str, red_start + sub_str + red_end) fp.close() grep('admin', '/var/log/nginx/access.log') |