首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单个sed命令中的多个模式匹配

单个sed命令中的多个模式匹配
EN

Stack Overflow用户
提问于 2020-04-27 14:25:50
回答 1查看 80关注 0票数 1

假设我有这个字符串,

代码语言:javascript
复制
asdfd ERROR [asdfa:11] (12312) [asdfiel-asdf-asdf] some random text

并且我希望删除括号内的文本((…))和第二次出现的方括号内的文本([…]),以便输出为

代码语言:javascript
复制
asdfd ERROR [asdfa:11] some random text

如何在不使用管道操作符的情况下,在单个sed命令中执行此操作?

EN

回答 1

Stack Overflow用户

发布于 2020-04-28 14:53:25

在您提到的特定情况下,不需要运行两个命令。您可以简单地这样做

代码语言:javascript
复制
sed 's/(.*] //' yourfile

(请注意,这里没有必要转义]。)显然,这将从该行的第一个开始括号删除到它后面的最后一个结束方括号(如果在第二个组之后还有其他[…]组,则可能不是第二个)。

另一种更准确的方法是这样做,

代码语言:javascript
复制
sed 's/([^)]*) *\([^[]*\) *\[[^]]*\] /\1/' yourfile

其中([^)]*)匹配第一个(…)组,\([^[]*\)匹配并捕获以下零个或多个非[的序列,\[[^]]*\]匹配它后面的第一个[…]组。(两个*和最后一个尝试删除)后面和[之前的所有空格,并可以根据需要进行调整。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61452877

复制
相关文章

相似问题

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