1

我想 grep 行,其中包含一个逗号,后跟四个相同的数字,后跟一个逗号,后跟一个字母字符。

我试过

grep -E ,'1111|2222|3333|4444|5555|6666|7777|8888|9999',[[:alpha:]] file

这似乎不像我描述的那样。问题是它似乎没有正确处理逗号和 [[:alpha:]] 。

你怎么能做到这一点?

4

2 回答 2

6

这是因为您的交替没有以您期望的方式应用。要使其按您的意愿运行,您需要使用组:

grep -E ,'(1111)|(2222)|(3333)|(4444)|(5555)|(6666)|(7777)|(8888)|(9999)',[[:alpha:]] file

或者,这可以使用 backref 更简洁地表达:

grep -E ,'([[:digit:]])\1{3},[[:alpha:]]' file

这基本上意味着相同的数字4次。但是,这也包括 0,因此它可能对您有帮助,也可能对您没有帮助。

编辑:

当然......要让它只有1-9,你可以

grep -E ,'([1-9])\1{3},[[:alpha:]]' file
于 2013-09-03T12:40:39.707 回答
2

为你试试这个正则表达式

',(1111|2222|3333|4444|5555|6666|7777|8888|9999|0000),\w'
于 2013-09-03T12:41:47.437 回答