나는 다음과 같은 거대한 파일을 가지고 있습니다
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
chr4 1 T 35
chr4 2 G 400
chr4 3 C 435
chr3 1 G 300
chr3 2 A 500
chr3 3 C 200
chr3 1 T 35
chr3 2 G 400
chr6 3 C 435
chr6 4 A 223
chr6 5 T 400
chr6 6 G 300
다음과 같은 첫 번째 열 값을 그룹화하여 파일을 여러 파일로 분할했습니다.
파일 1.txt
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
파일 3.txt
chr3 1 G 300
chr3 2 A 500
chr3 3 C 200
chr3 1 T 35
chr3 2 G 400
답변1
Awk
해결책:
awk '{ print > ("file" substr($1, 4) ".txt") }' file
substr($1, 4)
$1
- 위치에서 시작하는 첫 번째 필드 값에서 하위 문자열을 추출합니다.4
결과 보기:
$ head file[0-9]*.txt
==> file1.txt <==
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
==> file3.txt <==
chr3 1 G 300
chr3 2 A 500
chr3 3 C 200
chr3 1 T 35
chr3 2 G 400
==> file4.txt <==
chr4 1 T 35
chr4 2 G 400
chr4 3 C 435
==> file6.txt <==
chr6 3 C 435
chr6 4 A 223
chr6 5 T 400
chr6 6 G 300