【问题标题】:add string in each line at the begining of column在每行的开头添加字符串
【发布时间】:2013-08-06 08:43:18
【问题描述】:

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

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

非常感谢您的帮助, 干杯, 艾瑞克

【问题讨论】:

    标签: string bash awk


    【解决方案1】:

    这个呢?

    $ 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!请记住,如果您的问题已经解决,您可以将其中一个答案标记为已接受。问候
    【解决方案2】:

    awk 单行吗?

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

    【讨论】:

    • 您将如何对第一列之后的每一列执行此操作。如果每行的列数不同,代码会改变吗?
    【解决方案3】:

    sed单行:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-07
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2018-12-07
      • 1970-01-01
      相关资源
      最近更新 更多