首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Regex匹配重复模式

使用Regex匹配重复模式
EN

Unix & Linux用户
提问于 2021-07-25 10:50:05
回答 1查看 7.2K关注 0票数 2

假设我有一个文件,如下所示

代码语言:javascript
复制
1,2,3-5,6
1,2,3-5,6,
1
1-3
1,2,3-,4,5-7
1,2,3-,4,5-7,
1,2,-3,4,5
1,2,-,3,4
1,2,,,3,4
,1,2,3

只有结合下列规则才可视为有效:

  1. 范围[0-9]+-[0-9]+
  2. [0-9]+,[0-9]+
  3. 单数[0-9]+

以逗号结尾的行也应视为有效。

我只想提取

代码语言:javascript
复制
1,2,3-5,6
1,2,3-5,6,
1
1-3

如下所示的其他行与规则不匹配

代码语言:javascript
复制
1,2,3-,4,5-7
1,2,3-,4,5-7,
1,2,-3,4,5
1,2,-,3,4
1,2,,,3,4
,1,2,3

因为有些行范围不完整,有些行在组中缺少数字。

P.S:只使用PCRE兼容的grep解决方案会很棒,但其他解决方案也是受欢迎的。

EN

回答 1

Unix & Linux用户

发布于 2021-07-25 17:56:00

反图案:

代码语言:javascript
复制
grep -Ev '^,|,-|-,|,,' file
代码语言:javascript
复制
1,2,3-5,6
1,2,3-5,6,
1
1-3
代码语言:javascript
复制
grep -E '^,|,-|-,|,,' file
代码语言:javascript
复制
1,2,3-,4,5-7
1,2,3-,4,5-7,
1,2,-3,4,5
1,2,-,3,4
1,2,,,3,4
,1,2,3
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/659837

复制
相关文章

相似问题

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