2017-10-10 79 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