아이엠 !나이롱맨😎
반응형

sed 명령어를 사용할 때 " / " 가 기본 구분자이지만 "/home" 을 "/home2" 로 치환을 할 때 동일한 특수문자를 사용하여

생기는 현상이였다.

 

구글링을 하니 sed 명령어의 모든 구분자는 모든 기호가 구분자가 될 수 있다고 한다.

 

리눅스 쉘 스크립트 등에서 sed를 사용할 때 "sed: -e expression #1, char 12: unknown option to `s`" 와 같은 에러가 발생할 수 있습니다. 일반적으로 sed -i "s/string/number/gi" 와 같이 사용될텐데, /를 |로 변경시켜 주거나 문자열 안에 /가 있다면 \/ 로 사용하여 이스케이프 시켜주어야 합니다.

 

ex1) sed -i "s/string/number/gi"  --> sed -i "s|string|number|gi"
ex2) sed -i "s/st/ring/number/gi" --> sed -i "s/st\/ring/number/gi"
BEFORE=/home/apache-tomcat-9.0.54
AFTER=/usr/local/tomcat

sed "s|${BEFORE}|${AFTER}|g" ./bin/catalina.sh > test.txt
sed "s@${BEFORE}@${AFTER}@g" ./bin/catalina.sh > test.txt

 

s 뒤에 오는 문자를 기준으로 파싱되는 걸 알 수 있다.

반응형

article prev thumbnail

이전 글

[AWS] S3 버킷 정책 예제

2021.10.13

article next thumbnail
profile on loading

Loading...