Regex grep仅限前n行

Regex grep仅限前n行,regex,bash,shell,grep,Regex,Bash,Shell,Grep,我在把一封信中的正确日期作为文件时遇到了一个问题。 原因是grep文件创建日期,而不是文本中的任何其他日期 我们使用文件保存公司信息、我的地址、客户号、账单号。。。。 以及创建它的日期 可能是通过问候和/或短信,也可能是在日期内 通常,文档开头的日期具有不同的外观,如下所示 1999年12月,而不是1999年12月3日 如果我记下日期,以防出现图案 '(([0-9][0-9]{,1}\.)\s+('Januar'|'Februar'|'März'|'April'|'Mai'|'Juni'|'Ju

我在把一封信中的正确日期作为文件时遇到了一个问题。 原因是grep文件创建日期,而不是文本中的任何其他日期

我们使用文件保存公司信息、我的地址、客户号、账单号。。。。 以及创建它的日期

可能是通过问候和/或短信,也可能是在日期内

通常,文档开头的日期具有不同的外观,如下所示

  • 1999年12月,而不是1999年12月3日
  • 如果我记下日期,以防出现图案

    '(([0-9][0-9]{,1}\.)\s+('Januar'|'Februar'|'März'|'April'|'Mai'|'Juni'|'Juli'|'August'|'September'|'Oktober'|'November'|'Dezember')\s+([1-9][0-9][0-9][0-9]{1,}))'
    
    有时将错误的日期作为创建日期。原因是文件中日期的书写不同。 示例1是我通常得到的,当我用正确的模式搜索日期(创建日期)时,它工作得很好。 示例2遇到了问题,因为我得到了一个日期,但不是创建日期,而是第一个日期。相反,我从文本中获得了另一个与模式匹配的日期

    例1

    例2

    我可以使用不同的模式
    '([0-9][0-9]{,1}\)([0-9][0-9]{,1}\)([1-9][0-9][0-9][0-9][0-9]{1,}))
    在示例2中映射正确的日期,但在示例1中我会得到相同的问题

    我的想法是只在模式匹配取日期时搜索前n行,否则使用不同的模式。 我没有得到使用前n行的
    pdfgrep
    规则,只有这样我才有可能使用不同的模式

    有人知道怎么修吗

    干杯,B梦想与GNU grep:

    -m NUM
    :在NUM匹配行之后停止读取文件。

    或者学习使用,专门为此类任务设计


    还可以考虑学习或(然后阅读)。

    您是否考虑过将这两种模式与
    |
    (或)结合使用?这将确定与任一模式匹配的第一个日期出现,这似乎是您想要的…将图像替换为文本,然后将输入的所需输出(无描述)添加到您的问题(无注释)。@b梦想:如果您在前n行中找到两个日期,您将限制搜索,哪一个是正确的?如果作者决定在前n行之后再写,你如何找到一个日期?也许您应该在整个文档中搜索看起来像“创建日期行”的行(日期前面可能有很多空格?),然后从中选择第一行,不管它在哪一行。有些人将日期写在文件的结尾,接近最后的问候语。@hmm你是正确的-谢谢我可以使用
    pdfgrep-pdfgrep-o-o-o-o-o-o-pdffff5.有些人将日期写在文件的结尾,一些人将日期写在文件的结尾,一些人写在最后的日期,一些人写在最后的问候语,接近最后的最后的问候语。@hmhmm你是你是你是对你是对你是正确-谢谢你是正确-谢谢我可以使用pdfffffffffffffffffffgrep-reprepreprepreprepRep-o-o-o-o-o-o-o-o-o-o-o-o-o——最大计数1-最大计数1个1(((((((((([0-0-0-9-9-9[0-9[0-9-9[0-9[}\)\s+(‘一月’、‘二月’、‘马尔兹’、‘四月’、‘麦’、‘朱尼’、‘朱利’、‘八月’、‘九月’、‘奥克托伯’、‘十一月’、‘德森伯’)\s+([1-9][0-9][0-9][0-9]{1,})“*.pdf
    计算正确的日期。必须考虑如何在不同的程序部分中切换找到的日期。@user1934428您完全正确,但在我的情况下,我有一些文档,所有文档都有我喜欢在第一页的前1/3内使用的日期。完全正确!学习python不仅仅是我的清单。下一部分将脚本转换为python。