如何使用Eclipse或PowerGREP搜索和替换文件中的块?

时间:2018-06-14 03:50:52

标签: regex linux windows eclipse powergrep

在我的文件开头有一个自述部分,很多文件。该部分的格式如下:

###############   Read me ###############

many lines here

########################################

我想用新内容更新它们。我使用的是 Windows 7 ,但可以访问 Linux 。我有 Eclipse 以及 PowerGREP 。我不知道如何使用OS命令行命令执行此操作,也不知道如何使用Eclipse或PowerGREP执行此操作。有谁可以帮我这个?

2 个答案:

答案 0 :(得分:2)

如果您的部分格式始终相同,则应该如此简单:

###############   Read me ###############[\s\S]*?########################################

使用内联(?s)单行/点匹配全部模式,您可以使用常规.代替[\s\S],但这并不重要。请参阅Demo

然后,根据需要替换文本块。

答案 1 :(得分:1)

您可以使用awk

轻松完成

<强> INPUT:

###############   Read me ###############

many lines here
many lines here
many lines here

########################################
real stuff
real stuff
real stuff
real stuff
###############   Read me ###############

many lines here
many lines here
many lines here
blabla

########################################
real stuff2
real stuff2
real stuff2

<强>命令:

awk '/######   Read me #####/{a=0}/^#+$/{a=1;next}{if(a)print}' input
real stuff
real stuff
real stuff
real stuff
real stuff2
real stuff2
real stuff2

您只需将输出重定向到另一个文件即可。

说明:

  • /###### Read me #####/{a=0}当行包含###### Read me #####时,将变量放在0
  • /^#+$/{a=1;next}当一行只包含#时,将该变量放回1
  • {if(a)print}当变量位于1时打印