![파일 [중복]에서 구문 분석된 매개변수 값을 기반으로 파일 내용을 다른 파일로 분할](https://linux55.com/image/90611/%ED%8C%8C%EC%9D%BC%20%5B%EC%A4%91%EB%B3%B5%5D%EC%97%90%EC%84%9C%20%EA%B5%AC%EB%AC%B8%20%EB%B6%84%EC%84%9D%EB%90%9C%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%20%EA%B0%92%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%B6%84%ED%95%A0.png)
일반 파일에는 열로 구성되고 공백으로 구분된 데이터가 포함됩니다. 두 번째 필드의 값을 기반으로 이 초기 데이터 파일을 여러 다른 파일로 분할하고 싶습니다.
데이터 파일에는 54,242개의 행과 399개의 열이 있습니다. 데이터 구조는 다음과 같습니다.
SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs02 25 10 BA AA ...
rs03 1 30 AA BB ...
rs04 X 90 BB AA ...
내 출력에는 열 2에 file"${chr}"
고유한 값이 $chr
있는 만큼의 레코드(또는 행)가 포함되어야 합니다. 예를 들어:
파일 11
두 번째 필드가 다음과 같은 모든 레코드를 포함합니다.
SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs03 1 30 AA BB ...
문서 2525
두 번째 필드가 다음과 같은 모든 레코드를 포함합니다.
SNP Chr Pos ID_01 ID_02 ...
rs02 25 10 BA AA ...
등...
답변1
그리고 awk
:
awk 'FNR==1 { hdr = $0; next }
{
if(!f[$2]) { print hdr >"file" $2; f[$2] = 1 }
print >>"file" $2
}' data.txt