【发布时间】:2019-08-12 14:49:41
【问题描述】:
我正在尝试从拥有超过 200 个标题(列)的数据集中提取特定列。我想在单独的文件中获取前 5 列(CHROM ... ALT),以及从 H001 到 H231 的列中的一列。我只给出了我的文件头的例子,因为有些数据非常大。最好,我希望生成的数据文件具有其列的名称,例如 H001.txt(即第 1 到第 5 列,加上仅 H001 列)。我是 bash 脚本的新手,对如何使用变量有点困惑。谢谢!
这些是我文件中的标题,为了清楚起见,可以删除任何数据。
CHROM POS ID REF ALT QUAL FILTER INFO FORMAT H001 H002 H003 H004 H005 ... H231
我尝试过的代码只会复制整个数据集而不是每一列,我正在努力寻找一种在列之后命名文件的方法。
#!/bin/bash
headers=$(head -n 1 myData.txt)
for i in $(seq 10 231); do
awk '{ print $1, $2, $3, $4, $5, $i }' FS='\t' myData.txt > "$i".txt
done
我想要的输出应该是这样的:
文件 H001.txt
CHROM POS ID REF ALT H001
文件 H002.txt
CHROM POS ID REF ALT H002
以此类推每列到 H231。
【问题讨论】:
-
请将该示例输入的所需输出(无描述)添加到您的问题(无评论)。
-
将您的脚本粘贴到那里:shellcheck.net
-
哇,太酷了!谢谢你给我看这个
标签: bash