2016-06-25 81 views
0

我在這裏失去了一些東西。如果我有內容的文件:轉義< and >與grep

foo 
<foo> 

我做grep "\<foo\>" file_name不應該只匹配第二行?我也匹配第一。

我對grep不太好,所以我可能會搞砸了。

+0

我不認爲你需要逃避它們。試試這個: grep「」 – gawi

+0

顯然我是在想這個。好。那麼爲什麼轉義它們讓grep在文本中忽略它們呢? – user3804799

回答

1

逃離他們啓動他們的元字符屬性,並將其轉換字邊界在GNU的grep:

$ grep 'foo' file 
foo 
<foo> 
foobar 

$ grep '\<foo\>' file 
foo 
<foo> 

上面的第二個grep的不是找字符串<foo>,它看起來不開頭的字符串foo或立即由字組成字符成功。

一般來說,在不知道這意味着什麼的情況下轉義字符並不安全。下面是另一個示例:

$ printf 'aa\na{2}b\n' 
aa 
a{2}b 
$ printf 'aa\na{2}b\n' | grep 'a{2}' 
a{2}b 
$ printf 'aa\na{2}b\n' | grep 'a\{2\}' 
aa 

上面\{..\}被激活他們的元字符性質在作爲正則表達式間隔分隔符。