파일의 데이터 전치

파일의 데이터 전치

아래와 같이 텍스트 파일에 다음 데이터 세트가 저장되어 있습니다.

Case name                    Case_12                                                                                                                
d1                           0.2                                                                                
d2                           0.1                                                                                
d3                           2.2                                                                                 
d4                           1.29                                                                                
d5                           0                                                                                     
d6                          -1.10                                                                                
d7                           0.007                                                                                
d8                          -0.421                                                                                
d9                          -0.680                                                                                
d10                         -0.206                                                                                

Case name                    Case_1                                                                                                                 
d1                           0.2                                                                              
d2                           0.1                                                                              
d3                           2.2                                                                               
d4                           1.17                                                                              
d5                           0                                                                                   
d6                          -1.09                                                                              
d7                           0.003                                                                              
d8                          -0.458                                                                              
d9                          -0.640                                                                              
d10                         -0.030                                                                              

Case name                    Case_2                                                                                                              
d1                           0.2                                                                              
d2                           0.1                                                                              
d3                           2.2                                                                               
d4                           1.15                                                                              
d5                           0                                                                                   
d6                          -1.17                                                                              
d7                           0.005                                                                              
d8                          -0.504                                                                              
d9                          -0.670                                                                              
d10                         -0.023  

출력이 원하는 방식으로 다음 데이터를 사후 처리하는 방법이 있습니까?

Case name         d1         d2         d6         d7         d8         d9         d10                   
Case_1           0.2         0.1      -1.09      0.003      -0.458     -0.640      -0.030
Case_2           0.2         0.1      -1.17      0.005      -0.504     -0.670      -0.023
Case_12           0.2         0.1      -1.10      0.007      -0.421     -0.680      -0.206

도와주셔서 감사합니다!

답변1

각 그룹의 s 개수가 d동일하고 정렬되어 있으면 다음과 같이 할 수 있습니다.

<infile awk -v d=10 '
        BEGIN{ printf "Case_name" ;
               while (i++<d) { printf FS "d"i; };
               print "";
             }
        /Case name/{ if (line) { print line }; line=$NF; next }
        { line = line FS $NF; }
        END{ print line }' |column -t

ds에서 헤더를 수동으로 생성 하지 않는 또 다른 대안은 다음과 같습니다 .

<infile awk '
        /Case name/{ if (h && !is_h) { print h; is_h=1 };
                     if (line) { print line; }; 
                     h="Case_name"; line= $NF; 
                     next;
                   }
        !is_h { h= (h? h FS $1 : $1); }
        { line= (line? line FS $NF : $NF); }
        END{ print line }' |column -t

산출:

Case_name  d1   d2   d3   d4    d5  d6     d7     d8      d9      d10
Case_12    0.2  0.1  2.2  1.29  0   -1.10  0.007  -0.421  -0.680  -0.206
Case_1     0.2  0.1  2.2  1.17  0   -1.09  0.003  -0.458  -0.640  -0.030
Case_2     0.2  0.1  2.2  1.15  0   -1.17  0.005  -0.504  -0.670  -0.023

관련 정보