#!/usr/bin/env sh # YES_ZSH # YES_BASH # YES_DASH # YES_ASH # does not work with busybox awk (yet?) similar() { ### @- ### highlight adjacent lines up to the first inequivalent character. [ $# -eq 0 ] || { printf "%s\n" "$0: does not take arguments" >&2; return 1; } awk ' { i=0 split($0,a,"") split(L,b,"") for (c in a) if (a[c]==b[c]) i++ else break #print substr($0,1,i) "\033[7m" substr($0,i+1) "\033[0m" print "\033[31m" substr($0,1,i) "\033[0m" substr($0,i+1) L=$0 }' } [ -n "${preload+-}" ] || similar "$@"