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

时间:2013-08-05 15:11:48

标签: string bash awk

我挖掘了很多线索,但他们都没有解决这个问题。

我对addind string 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 oneliner

非常感谢任何帮助, 干杯, Irek

3 个答案:

答案 0 :(得分:5)

这个怎么样?

$ 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

答案 1 :(得分:3)

Awk单行吗?

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

答案 2 :(得分:1)

sed单行:

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