bash script2023. 7. 25. 13:49

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/591843

예전에 적었던 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

728x90
Posted by 반달가면