8

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

我有兴趣将字符串 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

4

3 回答 3

14

那这个呢?

$ 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
于 2013-08-05T15:20:17.350 回答
4

awk 单行吗?

$ awk -v OFS=$'\t' '{ $2="chr" $2; print}' so.txt
re1     chr1    AGT
re2     chr1    AGT
re3     chr2    ACGTCA
re12    chr3    ACGTACT
于 2013-08-05T15:20:54.837 回答
1

sed单线:

sed 's/\<[0-9]\>/chr&/' < input > output
于 2013-08-05T15:21:13.820 回答