Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何用sed中的'pwd'结果替换令牌?_Unix_Sed - Fatal编程技术网

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/}
我想要两个文件夹的路径。非常有趣,我想知道这个错误是什么意思。干得好