如何用交替进行grep

时间:2013-09-03 12:36:00

标签: regex linux grep

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

我试过

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

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

你怎么能这样做?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

试试这个正则表达式

',(1111|2222|3333|4444|5555|6666|7777|8888|9999|0000),\w'