[bash: grep] 바이너리 파일에서 문자열 검색하기 리눅스 bash script

grep 명령을 이용한 문자열 검색을 바이너리 파일에 적용할 경우, 별도의 옵션을 주지 않으면 해당 문자열 존재 여부만 알 수 있다.

# my_data.bin 파일에 문자열 ABC가 존재하는지 확인
grep "ABC" my_data.bin
Binary file my_data.bin matches

일치하는 문자열이 있을 때 해당 문자열을 화면에 표시하고 싶다면 -a 옵션을 추가해 주면 된다.

# my_data.bin 파일에서 문자열 ABC를 검색, 있을 경우 화면에 출력
grep -a "ABCD" my_data.bin
ABCDEFG

텍스트 파일에 대해 문자열 검색을 할 때 -a 옵션을 붙여도 별 문제 없이 검색이 잘 되므로, 텍스트 파일인지 바이너리 파일인지 잘 모르겠는 상황에서는 구분할 필요 없이 그냥 -a 옵션을 사용하면 되겠다.

또 한가지 방법은 바이너리 파일에서 문자열만 모아서 출력해 주는 strings 명령과 조합하는 것이다. 아래의 예시와 같이 strings의 출력을 grep의 입력으로 보낸다.

# my_data.bin 파일에서 문자열 ABC 검색
strings my_data.bin | grep "ABCD"
ABCDEFG

참고로, 바이너리 파일에서 16진수를 검색하는 방법은 이전 게시물을 참고하자. 여기로.



1 2 3 4 5 6 7 8 9 10 다음

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

40438
5036
1141156

ad_widget_2