搜索字符串并打印包含该字符串的完整行

时间:2013-08-29 07:51:56

标签: regex python-2.7

我试图在python中使用一个小脚本在远程服务器的radius.log中找到一个MAC地址。我想搜索一个特定的mac并打印包含该mac地址的完整行。我只能确认搜索()找到了mac。

我的代码的一部分是:

prog=re.compile(self.MAC_ADDR)
sess.exec_command('tail -f /usr/local/var/log/radius/radius.log')
rl, wl, xl = select.select([sess],[],[],0.0)
if len(rl) > 0:   #stdout
    block= sess.recv(1024)
    macfound=prog.search(block)
    if macfound:
        print "##############################################################################"
        print  self.MAC_ADDR,"found in tail"
        time.sleep (1)

1 个答案:

答案 0 :(得分:1)

只使用字符串可以更快:

for line in all_blocks.splitlines():
    if MAC in line:
         print(line)

这使用常规表达式为您提供mac地址所在的所有行:

prog = re.compile('^.*' + re.escape(MAC) + '.*$', re.MULTILINE)
lines = prog.findall(all_blocks)