2012-07-25 5 views
0

로그 파일의 행을 열로 변환하는 방법은 무엇입니까?

Operation   RequestId  RemoteIpAddress Time   EndTime StartTime 
someOperation   <req id>  192.168.1.1  151010.473 ms <end Time> <start time> 
someOtherOperation <req id>  192.168.1.1  1210.473 ms <end Time> <start time> 

감사합니다 사전에

내가이 형식으로 출력을 원하는 ......

아래
Operation=someOperation 
RequestId=giufiudf-fdsfdsg0-314243-df45 
RemoteIpAddress=192.168.1.1 
Time=151010.473 ms 
EndTime=Tue, 24 Jul 2012 22:23:46 UTC 
StartTime=1343168475.480 
EOE 
------------------------------------------------------------------------ 

Operation=someOtherOperation 
RequestId=giufiu2323df-fdssadasfdsg0-31424sdesa3-df45 
RemoteIpAddress=192.168.1.1 
Time=1210.473 ms 
EndTime=Tue, 24 Jul 2012 22:23:46 UTC 
StartTime=1342128475.480 
EOE 
------------------------------------------------------------------------ 

으로 로그 파일을 고려 .. !!

답변

1

awk 사용 방법 :

awk -F= 'BEGIN { RS=""; OFS="\t" } { for (i = 1; i < NF - 1; i++) { if (i%2==1 && NR == 1) header = (header ? header OFS : "") $i; else if (i%2==0) line = (line ? line OFS : "") $i; } if (header != "") { print header; } print line; header = line = "" }' file.txt 

여러 라인에 세분화 :

BEGIN { 
    RS = "" 
    FS= "=" 
    OFS = "\t" 
} 

{ 
    for (i = 1; i < NF - 1; i++) { 
     if (i%2==1 && NR == 1) { 
      header = (header ? header OFS : "") $i 
     } 
     else if (i%2==0) { 
      line = (line ? line OFS : "") $i 
     } 
    } 

    if (header != "") { print header } 
    print line; header = line = "" 
} 

출력 :

Operation RequestId RemoteIpAddress Time EndTime StartTime 
someOperation giufiudf-fdsfdsg0-314243-df45 192.168.1.1 151010.473 ms Tue, 24 Jul 2012 22:23:46 UTC 1343168475.480 
someOtherOperation giufiu2323df-fdssadasfdsg0-31424sdesa3-df45 192.168.1.1 1210.473 ms Tue, 24 Jul 2012 22:23:46 UTC 1342128475.480 
관련 문제