헤더와 데이터가 포함된 탭으로 구분된 큰 텍스트 파일이 있습니다. 파일을 열별로 더 작은 파일로 분할하고 헤더를 제외하고 파일 이름을 열 이름으로 지정하고 싶습니다.
pos red green blue
123 0|0 1|0 0|0
321 1|0 1|0 0|0
231 0|0 0|0 0|0
213 0|0 1|0 1|0
파일을 다음과 같이 분할해야 합니다.
pos.txt:
123
321
231
213
red.txt:
0|0
1|0
0|0
0|0
green.txt:
1|0
1|0
0|0
1|0
blue.txt:
0|0
0|0
0|0
1|0
나는 시도했다:
awk 'NR==1{h=$0; next}
!seen[$3]++{f=${h[$3]}".txt"; print >> f}' infile
하지만 결코 효과가 없었습니다 ...
답변1
다음을 시도해 볼 수 있습니다.
awk 'NR==1{for (i=1;i<=NF;i++) a[i]=$i; next}
{for (i=1;i<=NF;i++) {print $i > a[i]".txt"}}' infile
헤더 행에서는 각 필드의 값을 배열에 저장한 다음 나머지 행에 대해 각 필드를 해당 파일 이름으로 인쇄합니다.