我试图使用grep来捕获以下数据:grep的正则表达式捕获
"\\.xy$" "\\.ab$" "\\.ef\\.hi$"
我
grep -Eo "((\\\\\.[a-zA-Z]+)){1,2}\\$" file
两个问题:
- 它可以捕捉的东西像\\。 xy $,但不是\\。xy \\ .ef $
- 返回的结果在最后有文字$,为什么?
我试图使用grep来捕获以下数据:grep的正则表达式捕获
"\\.xy$" "\\.ab$" "\\.ef\\.hi$"
我
grep -Eo "((\\\\\.[a-zA-Z]+)){1,2}\\$" file
两个问题:
先于美元与单反斜线:
% grep -Eo '"(\\\\\.[[:alpha:]]+){1,2}\$"' input
"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"
或者将特殊字符转换为方括号,我觉得这更易读:
% grep -Eo '"([\]{2}[.][[:alpha:]]+)+"' input
"\\.xy$"
"\\.ab$"
"\\.ef\\.hi$"
几乎可行,我喜欢第二种方法,一个问题:$仍然显示在结果中,但它不是捕获组的一部分,为什么? – user775187 2011-06-13 02:35:31
'-o'表示“只显示行的匹配部分”,而不是捕获组“(...)”。你的意思是“几乎可行?” – Johnsyweb 2011-06-13 02:48:56
我如何显示捕获组(...) – user775187 2011-06-13 04:14:27
您已经双逃脱$ - 试试这个:
grep -Eo '"((\\\\\.[a-zA-Z]+)){1,2}\$"' file
与一个\转义$我什么也没有捕获。 – user775187 2011-06-13 02:31:53
尝试使用* extended grep *'egrep',并更好地支持正则表达式。 – pavium 2011-06-13 02:09:20
@pavium:我刚刚尝试过egrep -o,结果完全一样 – user775187 2011-06-13 02:11:05
请注意,正则表达式末尾的'$'没有被转义。 – 2011-06-13 02:12:05