使用 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的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本学习指南 [ 第四章 ] 查找与替换文本处理工具

(shell脚本)特殊分隔符文本文件导入MongoDB

shell脚本命令如何 读取文本指定位置内容 写入另一文本指定位置并替换原内容

awk用法之:文本替换

shell替换一个或多个空格为逗号

在 Google Apps 脚本中用 HTML 替换文本