特定の文字を含む列を抽出して別のファイルに保存する

特定の文字を含む列を抽出して別のファイルに保存する

100万以上の列と800行を含む大容量ファイルがあります。最初の行は、染色体名(Ha412HOChr01、Ha412HOChr02、.....Ha412HOChr17)と各染色体のSNP位置です。彼らは合計17の染色体を持っています。各染色体の列(Ha412HOCHr01、Ha412HOChr01、Ha412HOCHr01、....、Ha412HOCHr17)を抽出して別々のファイルに保存したいと思います。

"Ha412HOChr01:180159" "Ha412HOChr01:210724" "Ha412HOChr01:303270" "Ha412HOChr01:303280"....... "Ha412HOChr17:303402"
0 1 0 0 ......0
0 1 0 0 ......0
0 1 0 0 ......0
0 2 0 0 ......0
0 1 1 1 ......1
0 2 0 0 ......0

私が望む出力(例:染色体1):

out.chrom1
"Ha412HOChr01:180159" "Ha412HOChr01:210724" "Ha412HOChr01:303270" "Ha412HOChr01:303280" 
0 1 0 0 
0 1 0 0
0 1 0 0 
0 2 0 0 
0 1 1 1 
0 2 0 0 
0 0 0 0 
0 2 0 0
0 1 2 2 

答え1

フィールド区切り文字が空白の場合、Miller(https://github.com/johnkerl/miller)あなたは実行することができます

mlr --csv --fs " " cut -r -f "Ha412HOChr01:" input.txt

「Ha412HOCHr01」データのインポート

Ha412HOChr01:180159 Ha412HOChr01:210724 Ha412HOChr01:303270 Ha412HOChr01:303280
0 1 0 0
0 1 0 0
0 1 0 0
0 2 0 0
0 1 1 1
0 2 0 0

その後、forループを作成してすべてのファイルを作成できます。

関連情報