What about inet and brd string lookups (for translation)? This will give you:
ip addr show|egrep '^ *inet'|grep brd|awk -- '{ print $2; }'|sed -e 's:/[0-9]*$::'
Note that I use more commands than necessary; you can probably achieve the same with sed and the more sophisticated regexp, but I prefer a command that makes it obvious which steps I get to the result.
If you want to run it in one command, I suggest trying awk :
ip addr show|awk -- '$1 == "inet" && $3 == "brd" { split($2,a,"/"); print a[1]; }'
which is not much longer than the sed version, but more readable.
+1 A little more readable:
ip addr show | awk '$1 == "inet" && $3 == "brd" { sub (/\/.*/,""); print $2 }'
source share