열 헤더를 기준으로 매트릭스 파일을 여러 파일로 분할해야 합니다.
입력하다:
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' ...
모든 공백이 데이터에 올바르게 보존되도록 탭을 사용하십시오.