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