grep捕获正则表达式

时间:2011-06-13 02:04:10

标签: regex grep capture-group

我正在尝试使用grep来捕获以下数据:


"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"

我有

grep  -Eo "((\\\\\.[a-zA-Z]+)){1,2}\\$" file

两个问题:

  1. 它可以捕获\\。xy $之类的内容,但不能捕获\\。xy \\。ef $
  2. 返回的结果最后有文字$,为什么?

2 个答案:

答案 0 :(得分:2)

使用反斜杠来代表美元:

% grep -Eo '"(\\\\\.[[:alpha:]]+){1,2}\$"' input
"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"

或者将特殊字符放入方括号中,我发现它更具可读性:

% grep -Eo '"([\]{2}[.][[:alpha:]]+)+"' input 
"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"

答案 1 :(得分:0)

你已经双重逃过了美元 - 试试这个:

grep  -Eo '"((\\\\\.[a-zA-Z]+)){1,2}\$"' file