如何在sed中用`pwd`的结果replace一个标记?

我正在尝试做这样的事情:

sed 's/#REPLACE-WITH-PATH/'`pwd`'/' 

不幸的是,我那个出错了:

 sed: -e expression #1, char 23: unknown option to `s' 

为什么会这样呢?

你需要使用不同的字符而不是/ ,例如:

 sed 's?#REPLACE-WITH-PATH?'`pwd`'?' 

因为/出现在pwd输出中。

在sed中,你不能直接使用/你必须使用'/'。

  #!/bin/bash dir=$`pwd`/ ls -1 | sed "s/^/${dir//\//\\/}/g" 
 sed 's:#REPLACE-WITH-PATH:'`pwd`':' config.ini 

问题是正确地转义pwd的输出之一。 幸运的是,和vim一样,sed支持使用不同的分隔符。 在这种情况下,使用冒号而不是斜杠作为分隔符可避免转义问题。

而不是像这样的引号摸索,你可以这样做

 #!/bin/bash p=`pwd` # pass the variable p to awk awk -vp="$p" '$0~p{ gsub("REPLACE-WITH-PATH",p) }1' file >temp mv temp file 

或只是bash

 p=`pwd` while read line do line=${line/REPLACE-WITH-PATH/$p} echo $line done < file > temp mv temp file