我想 grep 行,其中包含一个逗号,后跟四个相同的数字,后跟一个逗号,后跟一个字母字符。
我试过
grep -E ,'1111|2222|3333|4444|5555|6666|7777|8888|9999',[[:alpha:]] file
这似乎不像我描述的那样。问题是它似乎没有正确处理逗号和 [[:alpha:]] 。
你怎么能做到这一点?
这是因为您的交替没有以您期望的方式应用。要使其按您的意愿运行,您需要使用组:
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
为你试试这个正则表达式
',(1111|2222|3333|4444|5555|6666|7777|8888|9999|0000),\w'