2017-11-29 1 views
0

파일 CSV에 쓰기로 :그렙 문자열과 로그 파일의 변경에는 총 찾을 수없는, 내가 입력 파일 (generator_file.log)가

[+++]   Added names:   [+++] 
    -> Add- response.names (3): 
    -> Add- chat.names (2): 
    -> Add- events.names (2): 
[///]  Modified active rules:  [///] 
    -> Mod- events.names (2): 
    -> Mod- mal.names (1): 
[---]   Removed names:   [---] 
    -> Del- chat.names (2): 
    -> Del- events.names (8): 
    -> Del- jan.names (4): 

및 예상 출력은 다음과 같이해야한다 :

Add,response,3 
Add,chat,2 
Add,events,2 
Del,chat,2 
Del,events,8 
Del,jan,4 
Total no of Added Names: 7 
Total no of Deleted Names: 14 

아래 내가 시도 쉘 스크립트이지만, 원하는 출력 못하고 다음에

egrep "Del-|Add-" generator_file.log |awk ' 
BEGIN{Addname=0; Delname=0;} 
{ 
     if(match($0,"Add-")>0) 
     { 
     split($0,addcountb,"("); 
     split(addcountb[2], addcount, ")"); 
     Addname+=addcount[1] ; 
     } 
    if(match($0,"Del-")>0) 
     { 
     split($0,delcountb,"("); 
     split(delcountb[2], delcount, ")"); 
     Delname+=delcount[1] ; 
     } 
} 
END {print "Number of names Added: "Addname; print "Number of names Deleted: "Delnames;}' 

답변

0

awk을 구출!

$ awk -F' +|[-.()]' -v OFS=, '{c=$(NF-1)} 
         /Del-/ {del+=c; f=1} 
         /Add-/ {add+=c; f=1} 
         f  {print $4,$6,c; f=0} 
         END {print "Added: " add; 
           print "Deleted: " del}' file 

Add,response,3 
Add,chat,2 
Add,events,2 
Del,chat,2 
Del,events,8 
Del,jan,4 
Added: 7 
Deleted: 14 

될 수 있거나

$ awk -F' +|[-.()]' -v OFS=, '/(Del|Add)-/{c=$(NF-1); cs[$4]+=c; 
              print $4,$6,c} 
           END   {print "Added: " cs["Add"]; 
              print "Deleted: " cs["Del"]}' file