我正在使用具有大量列的制表符分隔文件(VCF 文件在此处输入链接描述)(下面是一个小示例)
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 前缀。所有其他列中的值应保持不变。现在我尝试了一个sed
解决方案,但输出并不完全正确(最后一个管道不起作用):
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
在我的情况下使用会更安全,直接更改文件的第一列。