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

app*_*nic 4 bash sed

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

sed -i "/$PWD/a\ Hello World" historia.txt
Run Code Online (Sandbox Code Playgroud)

当我拥有它时,''除了""它正在工作之外,当然没有扩展变量。

Jan*_*nis 5

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

sed -i "s,${PWD},a Hello World," historia.txt
Run Code Online (Sandbox Code Playgroud)

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

sed -i "/${PWD//\//\\/}/a Hello World" historia.txt
Run Code Online (Sandbox Code Playgroud)