我需要替换多个文件中的一行,并且一直在使用 sed 来寻找解决方案。我遇到了这个错误:
sed: -e 表达式 #1, char 31: 未终止的 `s' 命令
尝试运行包含以下行的 bash 脚本时:
sed -i.bak "s/some-text-string/some-text-string ${stringVar}/" *.ext
我知道这是可能导致此问题的空格,但我无法在任何地方找到解决方案。我需要保留替换中的空格。我已经研究过附加字符串,但也无法使用其他函数走得很远。
我可能错误地解决了这个问题,并且觉得我应该使用不同的功能,但是我没有大量的 sed 或 bash 经验,并且已经碰壁了。
如果有人能对可能的解决方案有所了解,将不胜感激。
空格或制表符应该没有问题,但换行符会破坏 sed 命令。问题是 shell 变量不是您可能从其他编程语言中知道的真实变量,它们更类似于宏。
切换到具有真实变量的真实编程语言可以解决问题。例如,为了保持语法相似,Perl 解决方案:
通过预先分配给命令,变量成为命令运行的环境的一部分。