我正在尝试做这样的事情:
sed 's/#REPLACE-WITH-PATH/'`pwd`'/'
不幸的是,我错了:
sed: -e expression #1, char 23: unknown option to `s'
为什么会这样?
答案 0 :(得分:20)
您需要使用其他字符而不是/
,例如:
sed 's?#REPLACE-WITH-PATH?'`pwd`'?'
因为/
输出中显示pwd
。
答案 1 :(得分:2)
在sed中,您无法直接使用/,必须使用' /'。
#!/bin/bash
dir=$`pwd`/
ls -1 | sed "s/^/${dir//\//\\/}/g"
答案 2 :(得分:1)
sed 's:#REPLACE-WITH-PATH:'`pwd`':' config.ini
问题是正确地逃避pwd
的输出。幸运的是,就像在vim中一样,sed支持使用不同的分隔符。在这种情况下,使用冒号而不是斜杠作为分隔符可以避免转义问题。
答案 3 :(得分:1)
而不是像这样引用,你可以像这样做
#!/bin/bash
p=`pwd`
# pass the variable p to awk
awk -v p="$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