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
'bash script' 카테고리의 다른 글
[bash: awk] awk에서 조건에 따라 결과를 여러 파일로 저장하기 (0) | 2024.12.26 |
---|---|
[bash: awk] awk에서 파일명 출력 (0) | 2024.11.23 |
[bash:sed] 특정 개수의 문자열만 대체하기(예를 들면 처음 2개 문자열) (0) | 2024.08.05 |
[bash: awk] 특정 위치의 문자열 또는 문장(행 전체)의 길이 확인 (0) | 2024.07.31 |
[bash: date] 리눅스 date 명령으로 이메일 헤더 형식 시간 출력 (0) | 2024.05.16 |