Awk 使用sed将文本替换为数字序列

Awk 使用sed将文本替换为数字序列,awk,sed,Awk,Sed,我有这个: M6#pro [439640..444247 ][gbkey=CDS] M6#pro [444328..445335 ][gbkey=CDS] M6#pro [445407..445772 ][gbkey=CDS] 我想用数字序列替换单词pro,因此输出为: M6#1 [439640..444247 ][gbkey=CDS] M6#2 [444328..445335 ][gbkey=CDS] M6#3 [445407..445772 ][gbkey=CDS] 是否可以使用sed执

我有这个:

M6#pro [439640..444247 ][gbkey=CDS]
M6#pro [444328..445335 ][gbkey=CDS]
M6#pro [445407..445772 ][gbkey=CDS]
我想用数字序列替换单词pro,因此输出为:

M6#1 [439640..444247 ][gbkey=CDS]
M6#2 [444328..445335 ][gbkey=CDS]
M6#3 [445407..445772 ][gbkey=CDS]

是否可以使用sed执行此操作??我尝试了这个sed's/pro/NR/,但它没有产生一个数字序列。

如果您对perl没问题,那么尝试下面的方法

perl -pe 'BEGIN{$A=1;} s/pro/$A++/ge'  Input_file

如果数据在“d”文件中,在gnu awk上尝试:

awk -F'pro' '{print $1 NR $2}' d
你可以试试这个

awk '{sub(/pro/, NR)}1' file
将pro替换为NR已处理记录数-这基本上是在当前行使用gsub之前已处理的行数

使用sub而不是gsub,因为您只想在每行上进行一次替换。KGee您拒绝了说您需要在sed中使用解决方案的说法,然后接受了perl回答。只是说。。。。