Diff has a whole host of useful options like --old-group-format
that are described very briefly in help. They are expanded in http://www.network-theory.co.uk/docs/diff/Line_Group_Formats.html
The following is producing something similar to what you want.
diff 11.txt 22.txt --unchanged-group-format="" --changed-group-format="<%<>%>"
<456123
>789
You might also need to play with --old-group-format=format
(groups hunks containing only lines from the first file) --new-group-format=format
--old-line-format=format
(formats lines just from the first file) and --new-line-format=format
etc
Disclaimer - I have not used this for real before, in fact I have only just understood them. If you have further questions I am happy to look at it later.
Edited to change order of lines