sed 在文件中使用负前瞻

sed with negative lookahead in file

我正在尝试用另一个字符串 (replacementstr) 替换文件中所有不与下划线相邻的字符串 (str)。这不起作用-

sed -i 's/^(?!_str_|_str|str_)(str)$/replacementstr/g' /home/somefile.txt

为此你根本不需要负前瞻——如果没有它,你得到的状态机会更有效率(这意味着你最好不要使用它,即使你的引擎做了支持他们)。

sed -r 's/(^|[^_])str([^_]|$)/replacement/g'