【发布时间】:2014-12-23 20:16:46
【问题描述】:
我正在尝试做这样的事情:
sed 's/#REPLACE-WITH-PATH/'`pwd`'/'
不幸的是,我出错了:
sed: -e expression #1, char 23: unknown option to `s'
为什么会这样?
【问题讨论】:
我正在尝试做这样的事情:
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 -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
【讨论】:
project_dir=${current_dir/\/f1\/f2//} 我想要 2 个文件夹的路径。