반응형
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 뒤에 오는 문자를 기준으로 파싱되는 걸 알 수 있다.
반응형
'...' 카테고리의 다른 글
[Docker] Configuring MySQL NDB Cluster by using Docker and pointing with WSO2 APIM (0) | 2021.10.22 |
---|---|
[Docker] 컨테이너에 데이터 저장 (볼륨/바인드 마운트) (0) | 2021.10.20 |
[AWS] S3 버킷 정책 예제 (0) | 2021.10.13 |
[Network]와이어 샤크를 이용한 SSL 핸드쉐이크(handhake)의 이해 (0) | 2021.10.12 |
[Network]DNS가 UDP를 이용하는 이유 (0) | 2021.10.12 |