bash script2024. 12. 9. 22:08

awk에서 정규표현식에 의해 특정한 의미를 가지는 문자들이 있다. 예를 들어 마침표(.)는 임의의 문자를 나타낸다. 아래의 예시를 보자.

echo "abc" | awk '$0~/a.c/ {print $0}'
abc

위의 경우 a와 c 사이에 문자 하나가 있는 경우 조건을 만족한다. 만약 글자 그대로 "a.c"를 검색하려면, 아래와 같이 역슬래시(\)를 추가해야 한다.

echo "abc" | awk '$0~/a\.c/ {print $0}'

echo "a.c" | awk '$0~/a\.c/ {print $0}'
a.c

또 한가지 방법은 정규표현식(regex)의 문자 범위를 이용해서 "[.]" 이렇게 지정하는 것이다.

echo "abc" | awk '$0~/a[.]c/ {print $0}'

마찬가지로 글자 그대로 "a*b" 이런 것을 검색하려면 아래와 같이 해야 한다.

echo "abc" | awk '$0~/a[*]c/ {print $0}'

awk의 문자열 검색은 기본적으로 정규표현식을 지원하므로, 정규표현식에서 사용하는 특수문자를 검색하려면 역슬래시 또는 문자 범위를 이용해야 한다.

 

728x90
Posted by 반달가면