#! /bin/sed -nf

# This script replaces cat -b; the trick is to save the *next* line 
# number in hold space, printing the line soon so that we can then
# discard the pattern space

/^$/ {
  p
  b
}

x
/^$/ {
  # Prime the pump
  s/^.*$/1/
}

# Add the correct line number before the pattern
G
h
s/^/      /
s/^ *\(......\)\n/\1  /p

# move the line number only to hold space, and add a
# zero if we're going to add a digit on the next line
x
s/\n.*$//
/^9*$/ s/^/0/

# separate changing/unchanged digits with an x
s/.9*$/x&/

# keep changing digits in hold space
h
s/^.*x//
y/0123456789/1234567890/
x

# keep unchanged digits in pattern space
s/x.*$//

# compose the new number, remove the new-line implicitly added by G
G
s/\n//
h
