본문 바로가기

TIL

sed unterminated s' command 오류 해결법 중 하나

반응형

사용되는 해결법 : 문자열 구분자를 |로 바꾸자. sed -i "s/s1/s2/" file => sed -i "s|s1|s2|" file

모든 오류가 이런 케이스는 아니겠지만 내가 겪은 케이스는 sed -i "s/str1/str2/" file 이렇게 쓰는데 이제 문자열들 사이에 \$HOME, \$PATH 이런식으로 쉘 변수가 들어가는 경우에 저 오류가 발생했다.

sed -i "s/\/usr\/class\/cs140\/pintos\/pintos\/src/$HOME\/pintos\/src/" 로 썼을 땐 위 오류가 발생했고 아래로 바꾸니까 오류 없이 해결됐다.

sed -i "s|\/usr\/class\/cs140\/pintos\/pintos\/src|$HOME\/pintos\/src|"

오류가 나는 이유는 중간에 /가 여러번 등장해서다.

바꿀 문자열과 어떻게 바꿀지를 정하는 문자열의 구분자로 '/'가 쓰이는데 $HOME같은 경우는 /home/ubuntu 이렇게 중간에 /가 들어간다. 따라서 저 오류가 발생했고 구분자를 '|'로 바꾸니까 해결됐다.

 

반응형