Unix 如何用sed中的'pwd'结果替换令牌?
我正在尝试这样做:Unix 如何用sed中的'pwd'结果替换令牌?,unix,sed,Unix,Sed,我正在尝试这样做: sed 's/#REPLACE-WITH-PATH/'`pwd`'/' 不幸的是,我发现了以下错误: sed: -e expression #1, char 23: unknown option to `s' 为什么会发生这种情况?您需要使用不同的字符,而不是/,例如: sed 's?#REPLACE-WITH-PATH?'`pwd`'?' 因为/出现在pwd输出中 sed 's:#REPLACE-WITH-PATH:'`pwd`':' config.ini 问题是如
sed 's/#REPLACE-WITH-PATH/'`pwd`'/'
不幸的是,我发现了以下错误:
sed: -e expression #1, char 23: unknown option to `s'
为什么会发生这种情况?您需要使用不同的字符,而不是
/
,例如:
sed 's?#REPLACE-WITH-PATH?'`pwd`'?'
因为/
出现在pwd
输出中
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
或者只是猛击
p=`pwd`
while read line
do
line=${line/REPLACE-WITH-PATH/$p}
echo $line
done < file > temp
mv temp file
p=`pwd`
读行时
做
line=${line/REPLACE-WITH-PATH/$p}
回音$线
完成temp
mv临时文件
在sed中,不能直接使用/,必须使用“/”
#!/bin/bash
dir=$`pwd`/
ls -1 | sed "s/^/${dir//\//\\/}/g"
我试着做一些类似的事情,这帮助了我。。。我是这样使用的:
project\u dir=${current\u dir/\/f1\/f2/}
我想要两个文件夹的路径。非常有趣,我想知道这个错误是什么意思。干得好