adsense_in_article_test


[bash: grep] 정규표현 비활성화 리눅스 bash script

grep을 이용한 문자열 검색에서 정규표현(regular expression)은 매우 유용하지만 이걸 비활성화해야 될 경우가 있다. 일단, 찾고자 하는 문자열이 명시적으로 정해져 있다면 문제는 간단하다. 문자열을 작은따옴표로 감싸거나, 정규표현에 사용되는 [, -, ] 등의 기호 앞에 역슬래시(\) 기호를 사용하면 된다. 아래의 예시를 보자.

# a부터 z까지, 즉 영소문자를 검색하는 정규표현
cat my_file.txt | grep "[a-z]"

# 검색하려는 문자열 자체가 '[a-z]'인 경우
cat my_file.txt | grep '[a-z]'
cat my_file.txt | grep "\[a\-z\]"

그러나 만약 변수에 할당된 문자열에 정규표현에 사용되는 기호가 포함되어 있을 경우엔 어떻게 할 것인가? 이 경우엔 정규표현으로 해석이 되지 않도록 -F 옵션을 사용하면 된다.

str="[a-z]"
cat my_file.txt | grep -F "$str"

이렇게 해도 해결이 안되는 경우가 있는데, 검색하고자 하는 문자열이 하이픈(-)으로 시작되는 경우이다. 이 경우에는 -e 옵션을 같이 사용하자.

str="-[a-z]"
cat my_file.txt | grep -Fe "$str"

파일에서 문자열을 읽어서 변수에 할당하고 이 변수가 grep 명령어에 사용되는 경우, 문자열에 특수문자들이 포함될 가능성이 있다면 -Fe 옵션을 추가해 주자.
 


핑백

  • 반달가면 : [bash: grep] 정규표현식에 사용되는 특수문자 2016-02-18 21:28:29 #

    ... 나 만약 검색하고자 하는 문자열이 변수에 할당되어 있는데 여기에 특수문자가 포함되어 있다면 grep 명령에 -Fe 옵션을 추가해 주면 된다. (이전 게시물을 참고하자. 여기로) host_name="bahndal.egloos.com" grep -Fe "$host_name" test.txt 또는 sed 명령을 이용해서 특수문자에 역슬래시 ... more

덧글

  • costzero 2013/08/06 23:03 # 답글

    에디트플러스의 정규식만큼 흥미롭습니다.
    리눅스는 넘어야할 계단...
  • 반달가면 2013/08/07 23:22 #

    좀 복잡해 보이긴 해도 일단 익숙해지면 꽤 많은 일을 손쉽게 할 수 있어서 매우 유용합니다.
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.



통계 위젯 (화이트)

23207
3300
2298701

2019 대표이글루_IT

B-Side