2017-10-10 80 views
0

我閱讀this regex tutorial和它說: < and >在sed

的模式來搜索單詞 「the」 將是 「\ < [TT]他>」。

怎麼這不輸出bar bar

○ → echo "foo bar" | sed -E 's/\<foo\>/bar/' 
foo bar 

\<\>在sed使用?

+0

[它在這裏](https://ideone.com/n1YDfD)。 –

+0

@WiktorStribiżew奇怪。我正在使用OSX –

+0

然後,也許BSD sed不能以這種方式工作,本教程是針對GNU sed。 –

回答

1

\<\>用於字邊界,但它是平臺相關的。

在OSX sed你需要使用[[:<:]][[:>:]]爲同:

echo "foo food bar" | sed -E 's/[[:<:]]foo[[:>:]]/bar/' 

bar food bar 

但是,如果你能使用brew包安裝程序安裝在OSX gnu sed那麼你可以使用:

echo "foo food bar" | gsed -E 's/\bfoo\b/bar/' 

bar food bar 
+0

https://stackoverflow.com/a/5734237/3832970 –

+1

''[[:<:]]'和'[[:>:]]'的文檔可以在'man re_format'中找到,它記錄了正則表達式被'sed'接受。 – chepner