[bash: awk] 다중 문자열 검색 - 2 리눅스 bash script

예전에 적었던 awk를 이용한 다중 문자열 검색에 대한 보충.

문자열 A와 문자열 B가 모두 포함된 경우(A and B)와 둘 중 하나가 포함된 경우(A or B)에 대하여 아래와 같이 입력하여 검색할 수 있다. 교집합(and)은 "&&", 합집합(or)은 "||" 기호를 사용하면 된다.

# my_data.txt에서 A와 B가 모두 포함된 행 출력(A and B)
awk '/A/ && /B/' my_data.txt

# my_data.txt에서 A 또는 B가 포함된 행 출력(A or B)
awk '/A/ || /B/' my_data.txt

위와 같은 형식을 이용해서 좀 더 복잡한 검색을 해 볼 수 있다. 예를 들어 첫번째 항목(field)에 A가 포함되어 있으면서 두번째 항목에 B가 포함된 행을 찾을 수 있다. 아래의 예시를 보자.

# my_data.txt에서 첫번째 항목에 A가 포함된 행 출력
awk '$1 ~ /A/' my_data.txt

# my_data.txt에서 첫번째 항목에는 A, 두번째 항목에는 B가 포함된 행 출력
awk '$1 ~ /A/ && $2 ~ /B/' my_data.txt

만약 찾고자하는 문자열 포함이 아니라 정확히 일치하는 경우를 찾고 싶으면 정규표현식의 시작(^) 및 종결($) 기호를 이용하면 된다. 아래의 예시를 보자.

# my_data.txt에서 두번째 항목이 abc인 행을 출력
awk '$2 ~ /^abc$/' my_data.txt

awk 활용에 대한 다른 게시물들은 여기로



덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

208711
4378
1636334

ad_widget_2