【问题标题】:shell script to return lines between two matching line in file [closed]shell脚本返回文件中两个匹配行之间的行[关闭]
【发布时间】:2014-03-14 08:07:17
【问题描述】:

我的文件包含以下数据:

Line 1: FILE_READER: TPT19222 Operator instance 1 processing file.

FILE_READER: TPT19222 Operator instance 1 processing file

FILE_READER: TPT19220 Directory scan completed.  2 files processed.

FILE_READER: TPT19222 Operator instance 1 processing

FILE_READER: TPT19222 Operator instance 1 processing

FILE_READER: TPT19222 Operator instance 1 processing

FILE_READER: TPT19220 Directory scan completed.  3 files processed.

我想要只返回以下数据的 unix 脚本

FILE_READER: TPT19222 Operator instance 1 processing

FILE_READER: TPT19222 Operator instance 1 processing

FILE_READER: TPT19222 Operator instance 1 processing

FILE_READER: TPT19220 Directory scan completed.  3 files processed.

我想要一个 unix 脚本,它将返回包含“TPT19220”的最后一行和包含的倒数第二行之间的所有行。

【问题讨论】:

    标签: bash shell unix grep


    【解决方案1】:

    你可以试试这个sed

    sed -n '/TPT19220/,/TPT19220/{p}' yourfile | sed '1d'
    

    【讨论】:

    • 正确答案。
    【解决方案2】:

    使用 awk,您可以使用 awk '/pat1/,/pat2/' 说“给我行匹配模式 1 和行匹配模式 2(包括)之间的所有行”。

    也许这可以解决问题(取决于您确切的开始/结束模式要求):

    awk '/processing$/,/Directory scan completed/' inputfile
    

    【讨论】:

      猜你喜欢
      • 2018-07-12
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多