【问题标题】:substituting nth character of a field with awk用awk替换字段的第n个字符
【发布时间】:2012-04-23 05:18:17
【问题描述】:

我有一个看起来像这样的文件

seq1 CT 5 CCCGCTGCTGATGAC  
seq2 AG 8 CTGTGTAGATGATGGGTTAGAG  
seq3 TG 3 CGTGTGACA  

我正在尝试将字段 4 的第 n 个字符替换为字段 2 中的字符串,其中 n= 字段 3 指定的值。输出将是

seq1 CT 5 CCCGCTTGCTGATGAC  
seq2 AG 8 CTGTGTAAGATGATGGGTTAGAG  
seq3 TG 3 CGTGGTGACA  

我的尝试看起来像这样

awk '{a=$3; b=$2; sub(/(substr($4, a, 1))/,b);  print $0}’   

我猜正在发生的事情是将 sub 命令指定的内容视为字符串,而不是获取 substr 命令指定的字符串和变量 b。搜索后我找不到正确的方法。

干杯,

【问题讨论】:

    标签: awk


    【解决方案1】:
    awk '{$4 = substr($4, 1, $3-1) $2 substr($4, $3+1); print}'
    

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 2014-08-04
      • 2011-05-17
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多