#!/bin/bash myname=${0##*/} # basename of this script # 6 spaces, regexp for diff, TAB, and 3 spaces: pattern=' [<|>] ' # Set up temp files: if [ $# -ne 2 -o ! -r "$1" -o ! -r "$2" ] then echo 1>&2 "Usage: $myname file1 file2 (Check: both files exist, readable?)" exit 1 fi tmp1=$(mktemp -t $myname.1.XXXXXXXXX) || exit 1 if tmp2=$(mktemp -t $myname.2.XXXXXXXXX) then stat=1 # default exit status; reset later trap 'rm -f $tmp1 $tmp2; exit $stat' 0 1 2 15 else rm -f $tmp1 exit 1 fi # Run od, show characters, one byte per line, # show all bytes. Then remove offset values: od -c -w1 -v "$1" | sed 's/^[0-9]*//' > $tmp1 od -c -w1 -v "$2" | sed 's/^[0-9]*//' > $tmp2 # Side-by-side diff, output width 30 columns: #diff -y -W 30 --suppress-common-lines $tmp1 $tmp2 diff -y -W 30 $tmp1 $tmp2 | grep -C1 "$pattern" stat=$? # exit with same status as diff