Ответ 1
Вам нужно использовать другой символ вместо /
, например.:
sed 's?#REPLACE-WITH-PATH?'`pwd`'?'
потому что /
появляется в выводе pwd
.
Я пытаюсь сделать что-то вроде этого:
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