나는 500 개의 열이있는 파일을 가지고 있으며 모든 파일에서 공통으로 $ 1을 인쇄하는 동안 각 열을 새 파일로 분할해야합니다. 내가 파일 대응을 추적 할 수있다, 그러나필드 이름을 파일 이름으로 설정하는 방법
1.txt
ID ID
aa aa
bb bb
cc cc
dd dd
2.txt
ID F1
aa 1
bb 1
cc 1
dd 1
....
: 아래 예제 파일이며, 나는 아래의 bash는/AWK 솔루션을 사용하여이 작업을 수행하기 위해 관리 :
ID F1 F2 F4 F4
aa 1 2 3 4
bb 1 2 3 4
cc 1 2 3 4
dd 1 2 3 4
num=('1' '2' '3' '4')
for i in ${num[@]}; do awk -F "\t" -v col="$i" '{print $1,$col}' OFS="\t"
Input.txt > ${i}.txt; done
으로 필요한 출력을 제공합니다 출력 파일 이름으로 사용 된 열은 필드 번호이지만 필드 이름은 아닙니다. 필드의 헤더를 접두사로 출력 파일 이름에 쓸 수 있습니까?
ID.txt
ID ID
aa aa
bb bb
cc cc
dd dd
F1.txt
ID F1
aa 1
bb 1
cc 1
dd 1
, awk''의 단일 패스에서 수행 할 수 있지만, 500 열은 문제가 될 수 - 당신이 한 번에 그것을 할 최소한 500 개 파일을 열 수 있어야합니다 (내'ulimit -n'은 기본적으로 256입니다). 여러 번 통과해야 할 수도 있습니다 (2 ~ 99, 100-199, 200-299, 300-399, 400-499 등). –
firs 줄을 읽고 use는 for 루프의 색인으로, 열을 계산하는 사용자 자신의 카운터 – Jerzyk