将 Bash 变量中的路径扩展为 sed 表达式

将 Bash 变量中的路径扩展为 sed 表达式

我想问一下这条线有什么问题吗?

sed -i "/$PWD/a\ Hello World" historia.txt

当我把它放在这个中时,''除了""它正在工作,当然没有扩展变量。

答案1

问题是路径包含字符,并且您在替换参数分隔中也/使用了该字符。sed最简单的解决方案是在 中使用另一个分隔符sed,其中一个分隔符不会出现在您的数据中(例如,一个|, ,或者如我后续示例中的逗号):

sed -i "s,${PWD},a Hello World," historia.txt

编辑:上面解释了您遇到的问题(冲突的斜杠)。但我(现在)看到您不是在替换,而是在匹配行之后添加一行。在这种情况下,您可以转义PWD路径中的斜杠sed,例如:

sed -i "/${PWD//\//\\/}/a Hello World" historia.txt

相关内容