adsense_in_article_test


[bash: grep] 두개의 파일에서 공통으로 출현하는 문자열 찾기 리눅스 bash script

파일 2개를 비교해서 양쪽 파일에 공통적으로 출현하는 문자열을 찾는 방법이다. grep의 -f 옵션을 사용하면 된다. -f 옵션은 검색할 문자열을 파일로부터 한줄씩 읽어들이기 위한 것이다.

예를 들어 a.txt 파일에 있는 문자열 중에 b.txt에도 있는지 알고 싶다면, 아래와 같이 해 볼 수 있다.

# a.txt 파일로부터 문자열 패턴을 읽어서 b.txt에서 검색 (-f 옵션)
grep -f a.txt b.txt

한가지 생각해 볼 점은, a.txt와 b.txt에 빈 줄이 많이 존재할 경우 이것도 전부 문자열로 간주해서 비교하기 때문에 빈 줄도 일치하는 것으로 결과가 나와서 보기에 지저분할 수 있다. 위의 예시를 좀 더 깔끔하게 작업하려면 a.txt 파일에서 빈 줄을 제거하고 중복되는 문자열도 제거하면 되겠다. 빈 줄 제거는 grep에서 공백이 아닌 캐럭터 전체를 검색하고, 중복 제거는 sort의 -u 옵션을 이용하자. sort에 대한 내용은 이전 게시물을 참고하자. 여기로

a.txt 파일에서 빈 줄과 중복되는 행을 제거하여 a.txt.tmp 파일을 만든 후, 이 파일을 이용해서 b.txt에 대한 검색을 실행하면 된다.

# 빈 줄과 중복 제거
grep "[[:graph:]]" a.txt | sort -u > a.txt.tmp

# b.txt에 대한 검색
grep -f a.txt.tmp b.txt
 
만약 행 전체가 정확하게 일치하는 부분만 찾고 싶다면 grep에 -x 옵션을 추가하면 되겠다.

# 행 전체 일치 (-x 옵션)
grep -x -f a.txt.tmp b.txt



덧글

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



통계 위젯 (화이트)

314398
2207
2432115

2019 대표이글루_IT

B-Side