반달가면 이글루에서 백업 - 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
'bash script' 카테고리의 다른 글
[bash: awk] awk에서 영역 구분을 이용한 문자열 재구성 작업 (gensub) (0) | 2023.07.25 |
---|---|
[bash: sed] 대용량 파일에서 특정 위치의 행만 출력하기 (0) | 2023.07.25 |
[bash: sed] 텍스트 파일의 문자열 수정/변경 (0) | 2023.07.25 |
[bash: awk] 출력할 내용을 조건에 따라 여러 파일로 나누어 저장하기 (0) | 2023.07.22 |
[bash:uniq, sort] 한글 문자열에 대한 중복 제거 문제 (0) | 2023.07.22 |