I need to delete all strings consisting of a hyphen followed by a whitespace, but only when the whitespace is not followed by the word \"og\". Example file:
Kult
You can also use a sed chain, first replacing - og with something nonsensical (like booogabooga), then performing the replacement, then reversing the booogabooga.
sed -e 's/- og/booogabooga/g; s/- //g; s/booogabooga/- og/g'
Some versions of sed may need:
sed -e 's/- og/booogabooga/g' -e 's/- //g' -e 's/booogabooga/- og/g'
This can be slower and more painful, especially if you have multiple replacements as @Kusalananda suggests, but it is easier to understand.