sed 命令无法识别变量中的确切单词

sed 命令无法识别变量中的确切单词

我正在尝试使用 sed 命令替换文件中的单词,无论其大小写,如下所示:

sed -ie s/$tbl/$third_ele/gI $sql_file

其中$tbl包含单词 S_ASSET 并$third_ele包含 table_01。当文件包含单词 S_ASSET_XA 时,此情况会中断,脚本将 S_ASSET_XA 替换为我不想要的 table_01_XA 。我需要在替换时完全匹配它,因为我有另一个实例,其中 S_ASSET_XA 应该替换为另一个单词 table_02。

我怎样才能做到这一点?

答案1

使用 \b 来标记单词边界。由于您从命令行运行,转义字符必须加倍,因为 shell 在将其交给 sed 之前会进行自己的插值:

sed -ie s/$tbl\\b/$third_ele/gI $sql_file

相关内容