使用 sed 替换字符串,但当它是子字符串时避免替换

使用 sed 替换字符串,但当它是子字符串时避免替换

我想在几个文件中执行字符串替换。

该字符串是特殊的,因为它的形式 use module_plotting ,我需要避免在遇到类似 的字符串时进行替换use module_plotting_debug

预先感谢您的回答

答案1

使用单词边界表达式:

sed 's/\<use module_plotting\>/use module_plotting_debug/'

零宽度模式\<\>将在“单词”的边界上匹配,即在非单词字符和带有 的单词字符之间\<以及单词字符和带有 的非单词字符之间\>

“单词字符”是任何字母数字字符(可能考虑到当前区域设置,我对此不确定)。

我的re_format(7)手动的这么说 [[:<:]]并且[[:>:]]应该更便携,但这些似乎不适用于sed我的系统上的 GNU。

相关内容