在每一行的开头添加字符串

9

我有兴趣在每行的列的开头添加一个字符串 chr

该文件是以制表符分隔的,大致如下:

re1 1   AGT
re2 1   AGT
re3 2   ACGTCA
re12    3   ACGTACT

我需要的是:
re1 chr1    AGT
re2 chr1    AGT
re3 chr2    ACGTCA
re12    chr3    ACGTACT

解决方案可以是一个简洁的Bash命令行代码。
3个回答

16

这个怎么样?

$ awk '$2="chr"$2' file
re1 chr1 AGT
re2 chr1 AGT
re3 chr2 ACGTCA
re12 chr3 ACGTACT

解释

使用$2="chr"$2,我们将chr添加到第二个字段中。然后我们不需要任何其他命令来获得所需的输出,因为awk的默认行为是print $0

为了确保输出字段分隔符(OFS)为制表符,您可以执行以下操作:

$ awk 'BEGIN{OFS="\t"}$2="chr"$2' file
re1     chr1    AGT
re2     chr1    AGT
re3     chr2    ACGTCA
re12    chr3    ACGTACT

很高兴它对你起作用了,@Irek!记得如果你的问题已经解决,可以将其中一个答案标记为已接受。问候 - fedorqui

4

Awk一行命令是什么?

$ awk -v OFS=$'\t' '{ $2="chr" $2; print}' so.txt
re1     chr1    AGT
re2     chr1    AGT
re3     chr2    ACGTCA
re12    chr3    ACGTACT

如何在第一列之后的每一列都执行此操作?如果每行的列数不同,代码会改变吗? - Sky Scraper

1

sed 一行命令:

sed 's/\<[0-9]\>/chr&/' < input > output

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接