Scripting 搜索多个字符串并按顺序将其打印到文件中

Scripting 搜索多个字符串并按顺序将其打印到文件中,scripting,perl,search,string,Scripting,Perl,Search,String,我有一个如下的数据,我需要用“文件更改和行修改/添加行删除”过滤掉作者,并且我需要单独打印到文件中关于作者的数据。如果多个提交有相同的作者,则需要将他们分组并打印到一个文件中。我已经写了以下程序,但需要根据作者排序 ******************************************************************************** Data ********************************************************

我有一个如下的数据,我需要用“文件更改和行修改/添加行删除”过滤掉作者,并且我需要单独打印到文件中关于作者的数据。如果多个提交有相同的作者,则需要将他们分组并打印到一个文件中。我已经写了以下程序,但需要根据作者排序

********************************************************************************
Data
********************************************************************************
commit dbegafada..
Author: abc <abc@xy12.com>
Commit: abc <abc@xy12.com>
Merge

      CR1514 - MEMODOK and topWedge merge top planet

    Change-Id: MIG60dfdof5214ab47e39ba9b291c55b458649335cb16

/framework/base/xyc/a3.c
 Lines Modified/Added - 2 Lines Deleted - 1

/frameworks/based/xycpog/ae3.c
 Lines Modified/Added - 5 Lines Deleted - 4

/secure/basedfd/xyc/adf3.c
 Lines Modified/Added - 12 Lines Deleted - 2


commit 45eeertdbegafada..
Author: loxzv <loxzv@xy12.com>
Commit: loxzv <loxzv@xy12.com>
Merge: Pure and greed issue fixed
    Pure and greed issue

    Change-Id: IG6fdof5214abe39ba9b291c55b458649335c....

/frameworks/base-log/xysc/ba3.c
 Lines Modified/Added - 12 Lines Deleted - 9

/security/cops/xdsycpog/ae3.c
 Lines Modified/Added - 5 Lines Deleted - 4

/Nosecure/coper/xyc/adff3.h
 Lines Modified/Added - 12 Lines Deleted - 4


commit 45eeertdbegafada..
Author: loxzv <loxzv@xy12.com>
Commit: loxzv <loxzv@xy12.com>
Merge: Memory leak fixes are allowed

   CRT56 Memory leak fixes are allowed

    Change-Id: IG6fdof5214abe3dfdo0343dsssdfds9335c..b...

/inputs/base-log/xysc/bda3.c
 Lines Modified/Added - 12 Lines Deleted - 9

/security/cops/xdsycpog/beae3.h
 Lines Modified/Added - 5 Lines Deleted - 4

/fullysecure/golden/xyclub/srcGold.c
 Lines Modified/Added - 12 Lines Deleted - 4



commit 45eeertdbegafada..
Author: navzv <navzv@xy12.com>
Commit: Gerrit Code Review
Merge: cold act app release

   Merge cold act app release with service app

    Change-Id: IG6fdof5214lkode..9ba9b2dfdfd91c5586...

/goldenrule/base-less/copycat/batcat3.c
 Lines Modified/Added - 12 Lines Deleted - 9

/security/flops/justhog/state.c
 Lines Modified/Added - 15 Lines Deleted - 3

/Nosecure/method/value/dadff3.h
 Lines Modified/Added - 10 Lines Deleted - 7
********************************************************************************
数据
********************************************************************************
提交dbegafada。。
作者:abc
提交:abc
合并
CR1514-MEMODOK和topWedge合并顶行星
变更Id:MIG60dfdof5214ab47e39ba9b291c55b458649335cb16
/framework/base/xyc/a3.c
修改/添加行-删除2行-1行
/frameworks/based/xycpog/ae3.c
修改/添加行-删除5行-删除4行
/secure/basedfd/xyc/adf3.c
修改/添加行-删除12行-2行
提交45eeertdbegafada。。
作者:loxzv
提交:loxzv
合并:纯和贪婪问题修复
纯粹与贪婪问题
更改Id:IG6fdof5214abe39ba9b291c55b458649335c。。。。
/frameworks/base log/xysc/ba3.c
修改/添加行-删除12行-9行
/安全/cops/xdsycpog/ae3.c
修改/添加行-删除5行-删除4行
/Nosecure/coper/xyc/adff3.h
修改/添加行-删除12行-4行
提交45eeertdbegafada。。
作者:loxzv
提交:loxzv
合并:允许内存泄漏修复
允许进行CRT56内存泄漏修复
更改Id:IG6FDOf5214ABE3FDO0343DSSDFDS9335C..b。。。
/输入/base log/xysc/bda3.c
修改/添加行-删除12行-9行
/安全/cops/xdsycpog/beae3.h
修改/添加行-删除5行-删除4行
/fullysecure/golden/xyclub/srcGold.c
修改/添加行-删除12行-4行
提交45eeertdbegafada。。
作者:navzv
提交:Gerrit代码审查
合并:冷动作应用程序发布
将cold act应用程序发布与服务应用程序合并
更改Id:IG6fdof5214lkode..9BA9B2DFD91C5586。。。
/一枝黄花/无碱/仿制药/batcat3.c
修改/添加行-删除12行-9行
/security/flops/justhog/state.c
修改/添加行-删除15行-3行
/鼻疗/方法/数值/DADF3.h
修改/添加行-删除10行-7行

我的节目


#/usr/bin/perl-w
严格使用;
使用警告;
打开(infle,“/home/symbol/Result1.txt”)或死亡“无法打开主题文件\n”;
while(我的$line=)
{
#要过滤掉日志文件中已修改的(M)、已添加的(A)和已删除的(D)行。
如果($line=~/^M^A^D/){
如果($line!~/Merge | Author/){
打印输出文件$行;
}
}
如果($line=~/^M^A^D/){
我的$nextLine=;
如果($line!~/Merge | Author | Commit/){
打印输出文件$nextLine;
}
}
#打印带有M、A和D详细信息的行的条件。
如果($line=~/^line/){
打印输出文件$行;
}
#搜索“作者”的条件:
如果($line=~/^Author:/){
打印输出文件“\n*******************************************************************************作者修改/添加/删除的文件详细信息*********************************************************************************************************************************************************\n”;
打印输出文件$行;
}
}
封闭填充;
关闭输出口;

在我看来,您似乎想要创建一个散列,其中包含密钥的作者和散列值的数组。然后,将作者的文件更改行推送到数组上,该数组具有作者的名称作为哈希键

将文件处理成散列后,您将使用散列创建输出文档


您可以先对散列键进行排序,以便按字母顺序输出作者。

@Nav请使用3参数打开函数,并对输出文件使用附加模式
>
。避免使用裸字文件句柄。考虑使用<代码> * * 52 打印星。为什么要使用
/^M^A^D/
正则表达式两次?
#!/usr/bin/perl -w

use strict;
use warnings;


open(INFILE, "</home/symbol/data.txt") or die "Cannot open the file\n";
open(OUTFILE,">/home/symbol/Result1.txt") or die "Can’t open subjects file\n";

while ( my $line = <INFILE> )
{

# To filter out the Modified (M), Added(A) & Deleted(D) Lines in the log file.
            if ($line =~ /^M|^A|^D/ ) {
               if ($line !~ /Merge|Author/) {
                  print OUTFILE $line;
                  }
            }
            if ($line =~ /^M|^A|^D/) {
               my $nextLine = <INFILE>;
               if ($line !~ /Merge|Author|Commit/) {
                  print OUTFILE $nextLine; 
               }

            }

# Condition to print the Lines with M, A & D details.
            if ($line =~ /^ Lines/) {
               print OUTFILE $line;          
            }

# Condition to search for "Author:"
  if ($line =~ /^Author:/){
         print OUTFILE "\n****************************************************  AUTHOR MODIFIED/ADDED/DELETED FILES DETAILS  *******************************************************\n";
         print OUTFILE $line;
   }

 }

close INFILE;
close OUTFILE;