달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2012. 11. 15. 12:04

sed 사용 시 참고사항 sbin2012. 11. 15. 12:04

script에서 URL parsing 을 위해 sed 를 사용하다가 특수 문자와 expression 충돌 때문에 한참을 헤맸다. 하기와 같이 해결~!

sed Add/Replace 하고자 하는 string URL., / 등의 특수문자 포함인 경우 s/// expression 의 규칙과 충동된다. 이 경우 아래와 같은 방법으로치환하여 사용 가능하다

A.     ., / 등의 특수 문자를 일반 문자로 중복 치환한다.

#!/bin/sh

VALUE1=http://111.22.33.4/test

sed -e 's/\/.*//' -e 's/ABC.*/ABC='${VALUE1}'/g' ./test.conf > ./test.conf  #sed에서 expression error 발생한다.

VALUE2=${VALUE1//./\\.}  #. \.으로 치환

VALUE2=${ VALUE2//\//\\/}  #/ \/ 으로 치환

sed -e 's/\/.*//' -e 's/ABC.*/ABC='${VALUE2}'/g' /etc/dimark/dimclient.conf ./test.conf > ./test.conf #정상적인 URL String이 추가된다.

B.      sed s expression token/ 대신 ! 로 교체하여 사용하는 경우 URLdirect add/replace 할 수 있다.

#!/bin/sh

VALUE1=http://111.22.33.4/test

sed -e 's/\/.*//' -e 's!ABC.*!ABC='${VALUE1}'!g' ./test.conf > ./test.conf

:
Posted by [LunatiC]Simon