2014-12-15 3 views
1

У меня есть данные, как показано ниже, и мне нужно отфильтровать автора с «изменениями файлов и измененными линиями/добавленными линиями». И мне нужно отдельно распечатать его на файл в отношении авторов. Если для нескольких коммитов есть одни и те же авторы, их нужно группировать вместе и печатать в файле. Я написал программу, как показано ниже, но нужно сортировать в отношении автора.Найдите несколько строк и напечатайте их в файле в порядке

******************************************************************************** 
Data 
******************************************************************************** 
commit dbegafada.. 
Author: abc <[email protected]> 
Commit: abc <[email protected]> 
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 <[email protected]> 
Commit: loxzv <[email protected]> 
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 <[email protected]> 
Commit: loxzv <[email protected]> 
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 <[email protected]> 
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 

Моя программа


#!/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; 
+0

@Nav Пожалуйста, используйте функцию открытия 3 аргументов и используйте режим добавления '>>' для выходного файла. Избегайте дескрипторов файлов. Рассмотрите возможность использования '' * 'x 52' для печати звезд. почему вы дважды используете '/^M |^A |^D /' regex? – xtreak

ответ

0

Мне кажется, что вы хотите создать хэш с авторами для ключей и массивов для хэш-значений. Затем вы нажимаете строки изменения файла автора на массив, у которого есть имя автора для хеш-ключа.

После обработки файла в хэш, вы должны использовать хеш для создания выходного документа.

Сначала вы можете отсортировать ключи хеша для вывода авторов в алфавитном порядке.