为匹配的匹配项添加数字顺序

时间:2012-09-11 10:31:48

标签: regex linux vim sed

我有一些问题 我有一个大文件提供一个错误文本“这是一个错误” 在源代码中,我有很多具有相同文本的行。 如何将所有这些线改为计数线  我的意思是我想改变它:

some_function ()
 {
 provide  "it's an error"
  } 
 another_function ()
 provide  "it's an error"
 provide  "it's an error"

现在我想接下来:

some_function ()
 {
 provide  "1 it's an error"
  } 
 another_function ()
 provide  "2 it's an error"
 provide  "3 it's an error"

或相同但有行号。

2 个答案:

答案 0 :(得分:3)

使用行号:

awk '{gsub(/it.s an error/, NR" &"); print }' filename

答案 1 :(得分:2)

你可以使用Vim实现这一点(当你标记帖子时):

:let i=1 | g/\zeit's an error/s//\=i." "/g | let i=i+1

或使用其他方式使用错误行枚举错误:

:%s/\zeit's an error/\=line('.')." "/g