2008-05-06, 01:53(-04), Nathan Coulter:
> Looking for a simple ways to output the byte at which two strings differ.  
> Here 
> is one:
>
> cmp <(echo "hello") <(echo "help") | cut -d' ' -f5 | tr -d ,
>
> Any other suggestions?
I'd suggest you fix the locale to being C for more portable
results.

LC_ALL=C cmp <(echo "hello") <(echo "help") |
  cut -d' ' -f5 | tr -d ,

(note that <(...) is not standard, only in some ksh, zsh and
bash)

You could implement cmp for strings with awk, something like:

LC_ALL=C awk '
  BEGIN {
    s1 = ARGV[1]; s2 = ARGV[2]
    do {
      a = substr(s1, ++i, 1); b=substr(s2, i, 1);
      if (a != b) {print i; exit 1}
    } while (a != "" && b != "")
    exit 0
  }' hello help

-- 
Stéphane


Reply via email to