매트릭스 파일을 별도의 파일로 분할하고 헤더를 파일 이름으로 지정하려면 어떻게 해야 합니까?

매트릭스 파일을 별도의 파일로 분할하고 헤더를 파일 이름으로 지정하려면 어떻게 해야 합니까?

열 헤더를 기준으로 매트릭스 파일을 여러 파일로 분할해야 합니다.
입력하다:

       Sample1  Sample2 Sample3 Sample4 Sample5      
id1     GG      GG      GG      GG      GG         
id2     AA      AA      AA      AA      AA            
id3     AA      AG      AA      AA      AA          
id4     AA      AA      AG      AA      AA

예상 출력: (4개의 개별 파일, 파일 이름으로 열 헤더 포함)

샘플 1

id1 GG
id2 AA
id3 AA
id4 AA

샘플 2

id1 GG
id2 AA
id3 AG
id4 AA

...

답변1

awk 'NR == 1 { for (i = 1; i <= NF; ++i) h[i] = $i; next }
             { for (i = 2; i <= NF; ++i) print $1, $i >h[i-1] }' file

스크립트 awk는 먼저 헤더를 배열에 저장하여 h이것이 h[1]첫 번째 헤더 등이 되도록 합니다.

입력 데이터의 다른 모든 행에 대해 해당 열과 함께 첫 번째 열을 적절한 이름의 파일에 인쇄합니다( i데이터에 있는 열의 파일 이름은 h[i-1]).

프로그램 awk은 모든 출력 파일을 동시에 열 수 있는 충분한 파일 설명자가 있다고 가정합니다(수백 또는 수천 개의 열이 문제가 될 수 있음).

파일에서 탭을 구분 기호로 사용하는 경우 awk -F '\t' ...모든 공백이 데이터에 올바르게 보존되도록 탭을 사용하십시오.

관련 정보