#!/bin/bash # should also work reasonably well with git diff --word-diff sed -n \ -e ":start" \ -e "/^\(\x1b\[[0-9;]\+m\)\?diff .*patch\(\(\x1b\[m\)\?$\| \)/bpatch" \ -e "p;n" \ -e "#s|.*|NONPATCH|" \ -e "bstart" \ -e ":patch" \ -e "p;n" \ -e "/^\(\x1b\[[0-9;]\+m\)\?diff /bstart" \ -e "/^\(\x1b\[[0-9;]\+m\)\?\([-+]\)\2\2 /bpatch" \ -e "#s|.*|PATCH|" \ -e 's|^\(\x1b\[[0-9;]\+m\)\?\([{]\?[+]\)\(\x1b\[m\1\)\?[+]|\x1b\[1;36m\2+|' \ -e 's|^\(\x1b\[[0-9;]\+m\)\?\([{]\?[+]\)\(\x1b\[m\1\)\?[-]|\x1b\[1;35m\2-|' \ -e 's|^\(\x1b\[[0-9;]\+m\)\?\([[]\?[-]\)\(\x1b\[m\1\)\?[+]|\x1b\[36m\2+|' \ -e 's|^\(\x1b\[[0-9;]\+m\)\?\([[]\?[-]\)\(\x1b\[m\1\)\?[-]|\x1b\[35m\2-|' \ -e 's|^\(\x1b\[[0-9;]\+m\)\?\([ ]\)\(\x1b\[m\1\)\?[+]|\x1b\[36m\2+|' \ -e 's|^\(\x1b\[[0-9;]\+m\)\?\([ ]\)\(\x1b\[m\1\)\?[-]|\x1b\[35m\2-|' \ -e "bpatch"