#!/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
	}
}'
