구분 기호가 있는 이진 파일의 레코드 수를 결정하는 방법

구분 기호가 있는 이진 파일의 레코드 수를 결정하는 방법

주어진 바이너리 파일의 레코드 수를 확인하고 싶습니다. 파일 구분 기호는 사용자 입력으로 사용됩니다. 전체 어떻게 진행하나요?

답변1

LC_ALL="C" awk -v RS="${Delim}" 'END { print NR; }' < filename

RS는 레코드 구분 기호이자 정규식이므로 오류(예: 잘못된 정규식)가 발생하면 스크립트가 실패합니다.

LC_ALL="C"는 바이너리의 임의 바이트 값이 UTF-8 인코딩으로 해석될 수 있는 문제를 피하기 위한 임시 내보내기입니다.

그러나 각 정수, 부동 소수점 또는 이중의 단일 바이트 범위가 0x00에서 0xFF까지인 이진 파일에서 지정된 구분 기호가 어떻게 작동하는지 이해하고 싶습니다.

구분 기호가 아닌 모든 바이트를 제거한 다음 나머지 바이트를 계산할 수도 있습니다. 이 경우 Delim은 패턴이 아니지만 매뉴얼 페이지에 따라 이스케이프해야 할 수 있는 문자 집합일 수 있습니다.

tr -cd "${Delim}" < filename | wc -c

tr의 "set"은 멀티바이트 항목이 아닙니다. "ab"는 "ab"가 아닌 "a" 또는 "b"를 테스트합니다.

관련 정보