파일의 열 병합

파일의 열 병합

일부 데이터의 형식을 조정해야 하는데 이를 쉽게 변경할 수 있는 방법이 있는지 잘 모르겠습니다. 두 데이터 요소 사이에 "/"를 사용하여 두 데이터 열을 하나의 열로 병합해야 합니다.

입력하다

Known Mother    
5 babies                                                                                                                                    
3 Loci                                                               
Mom             314     322     249     261     342     346                 
2_1_2011        314     314     249     257     342     346        
2_17_2011       314     314     257     261     346     346        
2_26_2011       314     314     257     261     342     346   
2_30_2011       314     314     257     261     342     342   
2_5_2011        314     314     249     257     342     342

원하는 출력

Known Mother    
5 babies                                                                                                                                    
3 Loci                                                               
Mom             314/322     249/261     342/346                  
2_1_2011        314/314     249/257     342/346        
2_17_2011       314/314     257/261     346/346        
2_26_2011       314/314     257/261     342/346   
2_30_2011       314/314     257/261     342/342   
2_5_2011        314/314     249/257     342/342

이러한 파일에는 위의 예에 표시된 것보다 더 많은 데이터(총 144개 파일)가 포함되어 있습니다. 수동으로 Excel을 편집하지 않고 위의 수정 작업을 수행하는 방법에 대한 제안 사항이 있으면 크게 감사하겠습니다.

답변1

이 질문에는 두 부분이 있습니다.

  • 설명하는 방식으로 변환해야 하는 행을 결정합니다(예: "7개 열이 있는 행").
  • 변환 수행

Awk를 사용하여 이를 수행하는 한 가지 방법은 다음과 같습니다.

awk 'NF == 7 { print $1, $2 "/" $3, $4 "/" $5, $6 "/" $7 }
     NF != 7 { print }' input.txt

산출:

Known Mother
5 babies
3 Loci
Mom 314/322 249/261 342/346
2_1_2011 314/314 249/257 342/346
2_17_2011 314/314 257/261 346/346
2_26_2011 314/314 257/261 342/346
2_30_2011 314/314 257/261 342/342
2_5_2011 314/314 249/257 342/342

답변2

맞잡다Awk해결책:

awk 'NR<4;
     NR>3{ 
         printf "%s\t",$1; 
         for (i=2; i<NF; i+=2) printf "%s/%s%s", $i, $(i+1), (NF-i==1? "":"\t");
         print "" 
     }' file

산출:

Known Mother
5 babies
3 Loci
Mom 314/322 249/261 342/346
2_1_2011    314/314 249/257 342/346
2_17_2011   314/314 257/261 346/346
2_26_2011   314/314 257/261 342/346
2_30_2011   314/314 257/261 342/342
2_5_2011    314/314 249/257 342/342

관련 정보