sed 명령이 변수의 정확한 단어를 인식하지 못합니다

sed 명령이 변수의 정확한 단어를 인식하지 못합니다

다음과 같이 대소문자에 관계없이 파일의 단어를 바꾸려면 sed 명령을 사용하려고 합니다.

sed -ie s/$tbl/$third_ele/gI $sql_file

여기에는 $tblS_ASSET이라는 단어와 $third_eletable_01이 포함되어 있습니다. 파일에 S_ASSET_XA라는 단어가 포함되어 있고 스크립트가 S_ASSET_XA를 내가 원하지 않는 table_01_XA로 바꾸면 문제가 발생합니다. S_ASSET_XA를 다른 단어 table_02로 바꿔야 하는 또 다른 인스턴스가 있으므로 바꿀 때 정확히 일치해야 합니다.

어떻게 해야 하나요?

답변1

단어 경계를 표시하려면 \b를 사용하세요. 명령줄에서 실행 중이므로 이스케이프 문자를 두 배로 늘려야 합니다. sed에 전달하기 전에 쉘이 자체 보간을 수행하기 때문입니다.

sed -ie s/$tbl\\b/$third_ele/gI $sql_file

관련 정보