쉘은 변수 확장을 담당합니다. 문자열에 작은 따옴표를 사용하면 그 내용이 문자 그대로 처리되므로 sed
이제 모든 리터럴을 $var1
로 바꿉니다 ZZ
.
큰 따옴표 사용
공백을 유지하면서 쉘이 변수를 확장하도록하려면 큰 따옴표를 사용하십시오.
sed -i "s/$var1/ZZ/g" "$file"
대체 문자열에 따옴표 문자가 필요한 경우 셸에서 해석 할 백 슬래시를 앞에 추가해야합니다. 다음 예제에서 문자열 quote me
은로 대체됩니다 "quote me"
(문자 &
는로 해석 됨 sed
).
sed -i "s/quote me/\"&\"/" "$file"
작은 따옴표 사용
쉘 메타 문자가 많은 경우 패턴에 작은 따옴표를 사용하고 변수에 큰 따옴표를 사용하십시오.
sed -i 's,'"$pattern"',Say hurrah to &: \0/,' "$file"
내가 s,pattern,replacement,
대신에 어떻게 사용하는지 주목 s/pattern/replacement/
하십시오 . /
in 과의 간섭을 피하기 위해 사용 했습니다 \0/
.
예
그런 다음 쉘 sed
은 다음 인수와 함께 위의 명령을 실행합니다 ( pattern=bert
및 가정 file=text.txt
).
-i
s,bert,Say hurrah to &: \0/,
text.txt
경우 file.txt
포함 bert
, 출력은 다음과 같습니다
Say hurrah to bert: \0/