首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Eclipse或PowerGREP搜索和替换文件中的块?

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

Stack Overflow用户
提问于 2018-06-14 03:50:51
回答 2查看 47关注 0票数 0

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

代码语言:javascript
复制
###############   Read me ###############

many lines here

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

我想用新的内容更新它们。我使用的是Windows 7,但可以访问Linux。我有EclipsePowerGREP。我不知道如何使用OS命令行命令来做到这一点,也不知道如何使用Eclipse或PowerGREP来实现这一点。有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-14 04:39:54

如果您的节的格式总是相同的,那么它应该像下面这样简单:

代码语言:javascript
复制
###############   Read me ###############[\s\S]*?########################################

对于内联(?s),单行/点匹配-所有模式,您可以使用一个常规的.而不是[\s\S],但这并不重要。见演示

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

票数 2
EN

Stack Overflow用户

发布于 2018-06-14 05:44:17

你可以很容易地用awk做这件事。

输入:

代码语言:javascript
复制
###############   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

命令:

代码语言:javascript
复制
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时,打印行
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50849332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档