2

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

“\\.xy$”
“\\.ab$”
“\\.ef\\.hi$”

我有

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

两个问题:

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

2 回答 2

2

在美元前面加上一个反斜杠

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

或者将特殊字符放入方括号中,我觉得这样更易读:

% grep -Eo '"([\]{2}[.][[:alpha:]]+)+"' input 
"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"
于 2011-06-13T02:11:32.037 回答
0

你已经双重转义了 $ - 试试这个:

grep  -Eo '"((\\\\\.[a-zA-Z]+)){1,2}\$"' file
于 2011-06-13T02:12:09.573 回答