bash script2023. 4. 17. 17:01

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

 

텍스트 파일에서 awk 명령을 이용해서 2개 이상의 문자열을 검색할 수 있다. 통상 grep 명령으로 검색하면 되나, 문자열이 탭(tab)을 포함하고 있다거나 하는 이유로 awk 명령을 써야할 경우도 있기 때문에 여기에 정리해 두기로. grep 명령을 이용한 다중 문자열 검색은 이전 게시물을 참고하자. 여기로

문자열 A와 문자열 B가 모두 포함된 경우(A and B), 파이프(|)를 이용한다.

# my_file.txt에서 문자열 A와 B가 모두 포함된 행 출력
cat my_file.txt | awk '/A/' | awk '/B/'

문자열 A 또는 문자열 B가 포함된 경우(A or B), '|' 기호를 사용한다.

# my_file.txt에서 문자열 A 또는 B가 포함된 행 출력
cat my_file.txt | awk '/A|B/'

만약 찾고자 하는 문자열 자체가 "A|B"라면 어떻게 할까? '|' 기호 앞에 역슬래시(\)를 붙이면 된다.

# my_file.txt에서 문자열 "A|B"가 포함된 행 출력
cat my_file.txt | awk '/A\|B/'

문자열을 변수에 할당해서 사용한다면 awk 명령의 인자를 지정할 때 변수의 값이 인자로 대체될 수 있도록 큰따옴표(")를 사용해야 함에 유의하자. 따옴표 선택에 대한 내용은 이전 게시물을 참고하자. 여기로

# 변수에 문자열 할당
str1="ABCD"
str2="DEFG"
# my_file.txt에서 변수 $str1 또는 $str2에 할당된 문자열이 포함된 행 출력
cat my_file.txt | awk "/$str1|$str2/"
# my_file.txt에서 문자열 "$str1"이 포함된 행 출력($ 앞에 역슬래시 필요)
cat my_file.txt | awk '/\$str1/'

728x90
Posted by 반달가면