본문 바로가기
IT/Ubuntu

쉘 스크립트 문자열 치환 (sed) 에서 변수 사용

by SH_SH 2022. 1. 5.

 

쉘 스크립트에서 sed를 사용해 어떤 파일 (예시에서는 FILE_NAME)에서 특정 문자열을 변경하려고 할 때, 변수로 지정해 놓은 문자열을 사용하기 위해서는 다음과 같이 사용할 수 있습니다.

 

원래 문자열은 "original"이고 새로 바꾸고자 하는 문자열은 "new"입니다. 

 

export PREFIX="new"
sed -i 's/original/$PREFIX/g' -i FILE_NAME

 

위와 같은 코드로 작성하게 되면 "original" 이라는 문자열이 "$PREFIX"라는 매크로 이름 자체가 들어가게 됩니다. 이때, $PREFIX를 $(PREFIX)로 작성하면 오류가 발생할 수 있습니다.

이런 부분을 해결하기 위해서는 sed 사용 시 ' (따옴표) 문자 대신에 " (큰따옴표)를 사용하면 됩니다.

 

export PREFIX="new"
sed -i "s/original/$PREFIX/g" -i FILE_NAME

 

만약 바꾸고자 하는 문자열이 경로나 특수문자가 포함된 경우에는 sed: -e expression #1, char 20: unknown option to `s' 와 같은 에러가 발생하기도 합니다.

이런 경우에는 / (슬래시) 대신에 | (버티컬 바) 를 사용하면 됩니다.

 

export PREFIX="new"
sed -i "s|original|$PREFIX|g" -i FILE_NAME