[Unix] 명령어를 알아보자 Part1
아직도 햇갈린다 …..
정규표현식
정규 표현식이란
위에서 말한 잠깐 설명한 + 기호처럼 일반 문자(character)로서 역할이 아닌 특수한 도움을 주는 문자열들을 칭하는 말이 있다. 바로 메타 문자(metacharacter)라고 한다.
Tip 1
각각의 메타 문자들은 특수한 기능을 수행하는데 “^” 는 줄의 시작점을 뜻한다. 즉 egrep "^M" state.txt
는 M으로 시작하는 줄을 찾는다.
Tip 2
시작점을 찾는 메타 문자 ^가 있다면 끝점을 찾는 메타 문자도 있다. 바로 $이다.
수학에서는 \^를 Power라고 하고, $는 모두가 알다시피 달러이다. 이를 활용해서 쉽게 외우는 방법이 있습니다. “First you get the power, then you get the money.” 파워를 얻으면 돈은 따라온다는 말인데, 즉 ^는 시작점 $은 끝점을 찾는다고 보면 됩니다.
”|“라는 문자는 여러개의 조건으로 주는 문자열 중 하나라도 일치하면 그 라인을 프린트해주는 메타 문자로 쓰입니다.
Tip 3
이쯤되면 한 가지 똑똑한 궁금증이 생기실 수 있는데요. 그렇다면 메타 문자 자체를 찾고 싶을 때는 어떻게 해야하지? 즉 나는 “1+1” 이라는 문자가 포함된 문자열을 찾고 싶은데
grep "1+1" state.txt
라고 하면 +는 의도치 않게 메타문자가 되기 때문에 찾을 수가 없죠. 이경우 “+” 대신에 “\+”를 사용해주면 된답니다.
grep "\+" state.txt
처럼요.
항상 정규식에서 메타 문자를 문자처럼 쓰고 싶을 때에는 앞에 “\“를 붙여주면 되요. 여기까지 따라오셨다면 좋습니다.
여기까지 공부한 메타 문자들에 몇 가지 문자를 더해 정규식을 간단하게 정리된 걸 가져다 놓았습니다. 여기까지 알고 계신다면 다음에 정규식이 필요할 때 유용하게 사용하실 수 있으실 거에요.
메타 문자에서 제가 햇갈렸던 점이 있습니다.
*가 뜻하는 의미가 어떤 문자가 와도 된다는 것인지 아니면 *의 왼쪽에 있는 문자의 반복 유무를 뜻하는 것인지 햇갈렸습니다.
[At this point you must be curious about, if some characters like +, *, . is used for metacharaters, then how can i find +, *, . characters. It’s valuable question.
There is another skill. You can use metacharacters as charater by adding “\” in front of it.
egrep "\+" state.txt
would find lines that include “+” character. ]