이런 식으로하려고합니다.토큰을 sed에서`pwd`의 결과로 대체하려면 어떻게해야합니까?
sed 's/#REPLACE-WITH-PATH/'`pwd`'/'
불행히도, 나는 그 오류가 있습니다.
sed: -e expression #1, char 23: unknown option to `s'
왜 이런 일이 발생합니까?
이런 식으로하려고합니다.토큰을 sed에서`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 '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는 SED에서
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 개의 폴더에 대한 경로를 원했다. . – Shrinath
처럼 그것을 할 수 있습니다, 당신은/직접 사용할 수 없습니다, 당신은 사용해야합니다 '/'.
#!/bin/bash
dir=$`pwd`/
ls -1 | sed "s/^/${dir//\//\\/}/g"
매우 흥미 롭습니다. 오류의 의미가 궁금합니다. 위대한 직업 –