使用 sed 替换包含 $ 和 ( 和 ' 的字符串

使用 sed 替换包含 $ 和 ( 和 ' 的字符串

作为 shell 脚本的一部分,我想替换

LIBTOOL='$(SHELL) $(top_builddir)/libtool'

LIBTOOL=./libtool

源代码行号为 528。我尝试使用 sed 如下

sed -e '528 s/LIBTOOL=\'\$(SHELL) \$(top_builddir)\/libtool'/LIBTOOL=.\/libtool/'**

但我收到了一个错误。

因此,任何帮助都将不胜感激。

答案1

您的表达式中还有另一个未转义的单引号(请查看\/libtool'/LIBTOOL)。因此,以下是对我有用的方法:

sed "528 s/LIBTOOL='\$(SHELL) \$(top_builddir)\/libtool'/LIBTOOL='.\/libtool'/" filename.ext

请注意,我做到了不是包括-e参数,因为它需要一个文件名来读取它的表达式来自(并且您在命令行提供表达式——不要将此文件与要处理的文件混淆)。

相关内容