我正在尝试做这样的事情:
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