我試圖使用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