提取具有某些字符的列并将它们存储在单独的文件中

提取具有某些字符的列并将它们存储在单独的文件中

我有一个包含超过 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 循环并创建所有文件。

相关内容