与えられた列の内容が変更されるたびにファイルを分割する

与えられた列の内容が変更されるたびにファイルを分割する

私はテキストファイルを扱っていますが、インターネット検索や質問にもかかわらず解決できない問題に遭遇しました。

このファイル(20,880行)を2列(区切られた)内容に基づいて別々のファイルに分割したいと思います|。列2の内容が変更されるたびに新しいファイルが必要です。残念ながら、列2の各インスタンスの行数は一定ではないため、ファイルを各行nに分割することはできません。

元のファイルの最初の数行は次のとおりです。

>00000000|gene_cluster:GC_00001105|genome_name:r7534_20160316|gene_callers_id:24
>00000001|gene_cluster:GC_00001105|genome_name:r7537_20160321|gene_callers_id:78
>00000002|gene_cluster:GC_00001105|genome_name:r7541_20160426|gene_callers_id:774
>00000003|gene_cluster:GC_00001105|genome_name:r7544_20160502|gene_callers_id:1034
>00000004|gene_cluster:GC_00001105|genome_name:r7547_20160512|gene_callers_id:330
>00000005|gene_cluster:GC_00001105|genome_name:r7550_20160517|gene_callers_id:2094
>00000006|gene_cluster:GC_00001290|genome_name:r7534_20160316|gene_callers_id:76
>00000007|gene_cluster:GC_00001290|genome_name:r7537_20160321|gene_callers_id:358
>00000008|gene_cluster:GC_00001290|genome_name:r7541_20160426|gene_callers_id:1601
>00000009|gene_cluster:GC_00001290|genome_name:r7544_20160502|gene_callers_id:2134

次に、2番目の列に基づいてソートして、次のようにします。

>00006406|gene_cluster:GC_00000001|genome_name:r7534_20160316|gene_callers_id:1988
>00006409|gene_cluster:GC_00000001|genome_name:r7537_20160321|gene_callers_id:1059
>00006410|gene_cluster:GC_00000001|genome_name:r7537_20160321|gene_callers_id:1811
>00006407|gene_cluster:GC_00000001|genome_name:r7537_20160321|gene_callers_id:1947
>00006411|gene_cluster:GC_00000001|genome_name:r7537_20160321|gene_callers_id:643
>00006408|gene_cluster:GC_00000001|genome_name:r7537_20160321|gene_callers_id:759
>00006412|gene_cluster:GC_00000001|genome_name:r7541_20160426|gene_callers_id:1252
>00006415|gene_cluster:GC_00000001|genome_name:r7541_20160426|gene_callers_id:1920
>00006414|gene_cluster:GC_00000001|genome_name:r7541_20160426|gene_callers_id:2021
>00006413|gene_cluster:GC_00000001|genome_name:r7541_20160426|gene_callers_id:2094

しかし、2番目の列が変更されるたびにファイルを分割する方法が見つかりませんでした。このファイルをどのように分割できますか?

ありがとうございます!

ベストアンサー1

使用awk

$ awk -F"|" '{print > $2}' input_file
$ head gene_cluster*
==> gene_cluster:GC_00001105 <==
>00000000|gene_cluster:GC_00001105|genome_name:r7534_20160316|gene_callers_id:24
>00000001|gene_cluster:GC_00001105|genome_name:r7537_20160321|gene_callers_id:78
>00000002|gene_cluster:GC_00001105|genome_name:r7541_20160426|gene_callers_id:774
>00000003|gene_cluster:GC_00001105|genome_name:r7544_20160502|gene_callers_id:1034
>00000004|gene_cluster:GC_00001105|genome_name:r7547_20160512|gene_callers_id:330
>00000005|gene_cluster:GC_00001105|genome_name:r7550_20160517|gene_callers_id:2094

==> gene_cluster:GC_00001290 <==
>00000006|gene_cluster:GC_00001290|genome_name:r7534_20160316|gene_callers_id:76
>00000007|gene_cluster:GC_00001290|genome_name:r7537_20160321|gene_callers_id:358
>00000008|gene_cluster:GC_00001290|genome_name:r7541_20160426|gene_callers_id:1601
>00000009|gene_cluster:GC_00001290|genome_name:r7544_20160502|gene_callers_id:2134

おすすめ記事