使用 shell 脚本将文本替换为 pwd

Posted

技术标签:

【中文标题】使用 shell 脚本将文本替换为 pwd【英文标题】:Use a shell script to replace text with pwd 【发布时间】:2020-02-14 19:07:25 【问题描述】:

文件.txt

...
<LOCAL_PATH_TO_REPO>/src/java/example.java
...

^一个更长的文件,但这几乎解释了我想要做什么。

script.sh

dir=$(pwd)
# replace <LOCAL_PATH_TO_REPO> with dir

我尝试使用sed 命令,但由于某种原因它不起作用。关于如何做到这一点的任何想法?

【问题讨论】:

@anubhava Ran sed "s/&lt;LOCAL_PATH_TO_REPO&gt;/$PWD/" file.yml 并得到以下错误:sed: 1: "s/&lt;LOCAL_PATH_TO_REPO&gt;/ ...": bad flag in substitute command: 'U' 对不起使用:sed "s~LOCAL_PATH_TO_REPO~$PWD~" file.yml @anubhava 成功了!谢谢! 【参考方案1】:

您的错误意味着您在变量文本中有反斜杠。

最简单的解决方案是将分隔符更改为变量文本中不出现的分隔符。

如果没有逗号,请使用逗号:

sed -i "s,LOCAL_PATH_TO_REPO,$PWD," file.yml 

-i 标志将更改引入输入文件(适用于 GNU sed)。

【讨论】:

以上是关于使用 shell 脚本将文本替换为 pwd的主要内容,如果未能解决你的问题,请参考以下文章