bash script2023. 8. 8. 12:05

 

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

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진수를 검색하는 방법은 이전 게시물을 참고하자. 여기로.

 

 

728x90
Posted by 반달가면