#!/bin/bash [ $# -ne 2 ] && { echo "usage: `basename $0` pattern file" >&2; exit 1; } BUFMAX=2048 EXPR=$(echo "$1" | tr '[A-F]' '[a-f]') od -An -txC -v "$2" | sed 's/^ //' | awk ' { buf=buf$0" " while(sub("'"$EXPR"'",":&:",buf)) { i=index(buf,":") buf=substr(buf,i+1) j=index(buf,":") printf "%d:%s\n",base+(i-1)/3,substr(buf,1,j-1) buf=substr(buf,j+2) base+=(i-1+j)/3 } if((i=int((length(buf)-'$BUFMAX')/3))>0) { buf=substr(buf,i*3+1);base+=i } }'