用awk代替字段的第n个字符

时间:2012-04-22 15:31:55

标签: awk

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

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

我试图用字段2中的字符串替换字段4的第n个字符,其中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命令指定的whats视为字符串,而不是获取substr命令和变量b指定的字符串。搜索后我无法找到正确的方法。

干杯,

1 个答案:

答案 0 :(得分:3)

awk '{$4 = substr($4, 1, $3-1) $2 substr($4, $3+1); print}'