将数字作为后缀添加到多列

将数字作为后缀添加到多列

我的数据看起来像:

chr1    enhancer_   875557  876449  .   enhancer_
chr1    enhancer_   876970  877622  .   enhancer_
chr1    enhancer_   995719  996320  .   enhancer_
chr1    enhancer_   1142786 1143060 .   enhancer_

我想使用 awk 在第 2 列和第 6 列的末尾添加递增的数字。所以输出看起来像:

chr1    enhancer_1  875557  876449  .   enhancer_1
chr1    enhancer_2  876970  877622  .   enhancer_2
chr1    enhancer_3  995719  996320  .   enhancer_3
chr1    enhancer_4  1142786 1143060 .   enhancer_4

我花了大部分时间寻找,但一直没能做到这一点。

答案1

解决方案1:

awk '{print $1 " " $2 NR " " $3 " " $4 " " $5 " " $6 NR}' yourfile.txt

解决方案1截图

解决方案2:

awk '{$2 = $2 NR; $6=$6 NR; print }' yourfile.txt

解决方案2截图

每次替换的定序器

如果您更喜欢对每个替换进行排序,可以使用 Perl 版本

perl -pe 's/enhancer_/$& .++$n/ge' yourfile.txt

带序列的 Perl 解决方案

答案2

这只插入数字并保留示例的额外行空间。

awk '{gsub(/enhancer_/,"enhancer_"NR); print;}'  fileinput.txt

输出:

chr1    enhancer_1   875557  876449  .   enhancer_1
chr1    enhancer_2   876970  877622  .   enhancer_2
chr1    enhancer_3   995719  996320  .   enhancer_3
chr1    enhancer_4   1142786 1143060 .   enhancer_4

相关内容