Se o separador puder aparecer dentro de campos, então não é realmente um separador. Eu usaria algo como
KEY=$(sed -n '/^key *=/ { s/^key *= *//; p }' file.conf)
em vez disso: isso procura linhas iniciadas com key seguido por qualquer número de espaços e um sinal = , descarta o início da linha e imprime. Como dave_thompson_085 indica que p pode ser condicionado no s :
KEY=$(sed -n 's/^key *= *//p' file.conf)
O equivalente ao AWK é
KEY=$(awk '/^key *=/ { sub("^key *= *", ""); print }' file.conf)
e o mesmo truque de combinação pode ser usado:
KEY=$(awk 'sub("^key *= *", "")' file.conf)