쉘스크립트 사용중 아주 간단한 정규식 질문이 있어요..

morolty의 이미지

쉘스크립트 공부중인데요,

compressed="$(echo $1 | sed -e 's/[^[:alnum:]]//g')"

라는 구문이 있어요.

저는 이것을 compressed변수에, 첫번째 argument로 받은 $1변수의 내용을 출력하는 결과값을 sed 명령어에 대입하여 저 정규식대로 치환하는거라고 해석을 했습니다.

궁금증 1. [[:alnum:]]은 [a-zA-Z0-0] 라고 알고있습니다. ^는 문자열의 처음이라고 알고있는데, [^[:alnum:]]은 코드가 동작하는 결과를 보니 알파벳과 숫자를 제외한 문자라고밖에 해석이 안되네요.. 맞는건가요?

궁금증 2. sed 명령어에 정규식이 하나밖에 없으므로 -e 옵션은 쓰지 않아도 되는것이 맞나요??

정규표현식에 대해 구글링을 해보려 해도 기호가 많아서 구글링이 잘 안돼서 여쭙습니다. 감사합니다.

eseo의 이미지

생각하신대로 입니다.

[1]
"^" 기호는 부정을 나타냅니다.
http://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

[2]
하나밖에 없으면 -e 옵션은 쓰지 않아도 됩니다.
http://www.grymoire.com/Unix/Sed.html#uh-13

---
배려하는 마음을 갖자.

마잇의 이미지

^ - 캐럿?이 대괄호 안 제일 처음에 나오면 의미가 바뀝니다.


--
마잇

morolty의 이미지

감사합니다!