找到一个子字符串(一个字符串前后是特定字符串)的正确语法是什么不是匹配特定模式?sed正则表达式和子字符串否定
例如,我想利用其与开始BEGIN_
所有子,端与_END
和是不等于FOO
之间的子串;并用格式“(内部子字符串)”替换整个子字符串。下面将匹配:
BEGIN_bar_END
- >(bar)
BEGIN_buz_END
- >(buz)
BEGIN_ihfd8f398IHFf9f39_END
- >(ihfd8f398IHFf9f39)
但BEGIN_FOO_END
将不匹配。
我已经打得四处以下,但似乎无法找到正确的语法:
sed -e 's/BEGIN_(^FOO)_END/($1)/g'
sed -e 's/BEGIN_([^FOO])_END/($1)/g'
sed -e 's/BEGIN_(?!FOO)_END/($1)/g'
sed -e 's/BEGIN_(!FOO)_END/($1)/g'
sed -e 's/BEGIN_(FOO)!_END/($1)/g'
sed -e 's/BEGIN_!(FOO)_END/($1)/g'
作为一个说明,与全行打交道时,这可以使用''实现!http://www.grymoire.com/Unix/Sed.html#uh-32 – Zenexer 2013-05-23 02:52:13