【发布时间】:2018-08-21 18:28:47
【问题描述】:
我正在使用包含大量列的制表符分隔文件(VCF 文件enter link description here)(下面是一个小示例)
1 13979 S01_13979 C G . . PR GT ./. ./.
1 13980 S01_13980 G A . . PR GT ./. ./.
1 13986 S01_13986 G A . . PR GT ./. ./.
1 14023 S01_14023 G A . . PR GT 0/0 ./.
1 15671 S01_15671 A T . . PR GT 0/0 0/0
1 60519 S01_60519 A G . . PR GT 0/0 0/0
1 60531 S01_60531 T C . . PR GT 0/0 0/0
1 63378 S01_63378 A G . . PR GT 1/1 ./.
1 96934 S01_96934 C T . . PR GT 0/0 0/0
1 96938 S01_96938 C T . . PR GT 0/0 0/0
在第一列(染色体名称)中,我有从 1 到 26 的数字(例如 1,2,...25,26)。我想为 1 到 9 的数字添加 HanXRQChr0 前缀,为 10 到 26 的数字添加 HanXRQChr 前缀。所有其他列中的值应保持不变。
现在我尝试了sedsolution,但输出并不完全正确(最后一个管道不起作用):
cat test.vcf | sed -r '/^[1-9]/ s/^[1-9]/HanXRQChr0&/' | sed -r '/^[1-9]/ s/^[0-9]{2}/HanXRQChr&/' > test-1.vcf
AWK 如何做到这一点?我认为AWK 在我的情况下使用会更安全,直接更改文件的第一列。
【问题讨论】:
-
请在输入和输出的代码标签中添加示例,也请尝试添加您为解决此问题所做的努力,然后让我们知道。
-
虽然它可以在 awk 中完成,但作为一般规则,如果你问“我如何进入 (awk | sh)”,答案是“不要,使用 perl”。如果不清楚如何做,awk 或 sh 是错误的工具。
标签: awk vcf-variant-call-format