HP-UX용 "xxd -p"의 대안 - "xd"와 동일한 결과를 얻는 방법은 무엇입니까?

HP-UX용 "xxd -p"의 대안 - "xd"와 동일한 결과를 얻는 방법은 무엇입니까?

직장에서 매우 유용한 명령이 있습니다. 특정 항목을 검색합니다.일부 16진수 원시 파일에서파일 이름. Linux 시스템에서 자주 사용하는 명령은 다음과 같습니다.

  find . -name '**FILENAME**' | while read filename; do 
    xxd -p $filename | tr -d '\n' | grep -i "**STRING**" > /dev/null
    if [ $? -eq 0 ];then 
        echo "STRING FOUND IN $filename"; 
    fi; 
done

나는 이 명령을 작성하지 않았습니다. HP-UX 시스템에서는 xxd가 존재하지 않으므로 xd를 사용해야 합니다. 하지만 xxd -p와 동일한 결과를 얻는 방법을 모르겠습니다.

HP-UX 시스템에서 실행되도록 이 명령을 어떻게 조정합니까?

답변1

저는 HP-UX를 사용하지 않으므로 이것만 확인했습니다.xd(1):

xd -b -An -v $filename
  • -An오프셋 표시 방지
  • -b기본값은 1바이트입니다(8진수는 od, 16진수는 xd).
  • -v동일한 줄이 다음으로 대체되는 것을 방지합니다.*

(저를 포함한 많은 시스템에 이 기능이 있지만 od없습니다 xd. 그래서 이식성을 위해 사용했습니다 od -tx1 -An -v $filename.)

그러면 각 바이트 사이에 공백이 있는 개별 16진수 바이트가 출력됩니다. tr명령을 변경하면 tr -d [:space:]개행 문자뿐만 아니라 모든 공백이 제거됩니다.

이 모든 것을 하나로 묶으려면 스크립트의 xxd및 부분을 바꿔서 줄이 다음과 같이 보이도록 해야 합니다.tr

xd -b -An -v $filename | tr -d '[:space:]' | grep -i "**STRING**" > /dev/null

답변2

주문하다

xxd -p < file | tr -d '\n'

간단한 Perl 스크립트로 대체 가능

perl -ne 'foreach $c (split(//,$_)) { printf "%02x",ord($c)}' < file

관련 정보