
私は次のような巨大なファイルを持っています
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