当前位置: 首页 > 面试题库 >

用grep表示一个单词,如果找到,则在模式匹配之前打印10行,之后打印10行

勾岳
2023-03-14
问题内容

我正在处理一个巨大的文件。我想在该行中搜索一个单词,找到后我应该在模式匹配之前打印10行,在模式匹配之后打印10行。如何在Python中完成?


问题答案:
import collections
import itertools
import sys

with open('huge-file') as f:
    before = collections.deque(maxlen=10)
    for line in f:
        if 'word' in line:
            sys.stdout.writelines(before)
            sys.stdout.write(line)
            sys.stdout.writelines(itertools.islice(f, 10))
            break
        before.append(line)

用于collections.deque在比赛前保存多达10行,并在比赛后保存itertools.islice下10行。

更新 要排除具有ip / mac地址的行:

import collections
import itertools
import re  # <---
import sys

addr_pattern = re.compile(
    r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b|'
    r'\b[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}\b',
    flags=re.IGNORECASE
)  # <--

with open('huge-file') as f:
    before = collections.deque(maxlen=10)
    for line in f:
        if addr_pattern.search(line):  # <---
            continue                   # <---
        if 'word' in line:
            sys.stdout.writelines(before)
            sys.stdout.write(line)
            sys.stdout.writelines(itertools.islice(f, 10))
            break
        before.append(line)


 类似资料:
  • 本文向大家介绍Perl语言匹配模式的打印行(PCRE grep),包括了Perl语言匹配模式的打印行(PCRE grep)的使用技巧和注意事项,需要的朋友参考一下 示例 不区分大小写:            

  • 本文向大家介绍grep 仅打印行的匹配部分,包括了grep 仅打印行的匹配部分的使用技巧和注意事项,需要的朋友参考一下 示例            

  • Contributed by Sean Kelly. Restructured and updated by Jim Mock. 10.1. 概述 FreeBSD 可以支持众多种类的打印机,从最古老的针式打印机到最新的激光打印机以及它们之间所有类型的打印机,令您运行的应用程序产生高质量的打印输出。 FreeBSD 也可以配置成网络打印服务器。 它可以从包括FreeBSD、 Windows® 及 M

  • 我在寻找单词“house”和“car”时有一个要求,但它们必须在10个单词之间。我有以下正则表达式: 这适用于任何单词组合。但是,这并不满足“10字以内”的要求: 因此,以下内容将是一个很好的匹配: 但是,以下内容不应匹配: 汽车文字1文字2文字3文字4文字5文字6文字7文字8文字9文字10文字11房屋 我怎样才能做到这一点?提前感谢。

  • 问题内容: 我有一个python脚本test.py: 在linux命令行上执行 返回: 然后执行 哪个返回 如何重定向输出使os.system调用在print语句之前打印? 问题答案: 当您输出到管道时,Python缓冲写入的输出,并在刷新,溢出,关闭后(程序退出时)输出。虽然它将缓冲打印调用,但系统调用输出将直接输出到stdout中,并且其输出将不会被缓冲。这就是为什么您会看到这样的优先级。为了

  • 问题内容: 我正在尝试打印,并且该方法在我遇到这种情况之前效果很好。假设我要打印之前,仅在第一页(不是标题)中打印文本“ Report”,最后在文本中打印“ This is the report end”。我想再次澄清一下,我在打印时不需要仅此页眉或页脚出现在第一页的顶部和最后一页的底部。 我怎样才能做到这一点? 问题答案: 要做到这一点的方法之一是一系列适合的一个实例,如图所示这里。 附录:有一

  • 本文向大家介绍打印出杨辉三角形(要求打印出10行如下图)。相关面试题,主要包含被问及打印出杨辉三角形(要求打印出10行如下图)。时的应答技巧和注意事项,需要的朋友参考一下 【参考答案】  

  • 问题内容: 例如,我有两个变量,以及如何仅使用一个变量而不将类型转换为来在单独的行中打印两个整数。(如在C ++以下:) 问题答案: 在python3中: 在python2中: …或者使用python3的打印 自从我的第一个答案以来,OP就使用可变类型更改来编辑问题。更新已更新问题的答案: 如果您有一些整数,即和: Python 3: Python 2: 要么 要么