Você pode usar:
grep -v -f <(sed -r 's/([^=]*).*$//' fr.i18n.txt) en.i18n.txt
Que filtra todas as chaves de fr.i18n.txt de en.i18n.txt.
Exemplo:
$ cat > en.i18n.txt
ui.title=Title
ui.close=Close
ui.edit=Edit
ui.accept=Accept
^D
$ cat > fr.i18n.txt
ui.title=Titre
ui.edit=Modifier
^D
$ grep -v -f <(sed -r 's/([^=]*).*$//' fr.i18n.txt) en.i18n.txt
ui.close=Close
ui.accept=Accept
$ FINISHED="$(grep -v -f <(sed -r 's/([^=]*).*$//' fr.i18n.txt) en.i18n.txt)"
$ echo "$FINISHED"
ui.close=Close
ui.accept=Accept
@don_crissti também apontou corretamente que, nesse caso, a lista de filtros também pode ser gerada facilmente com cut
tin a 1
st f
ield usando d
elimiter '=':
grep -v -f <(cut -d= -f1 fr.i18n.txt) eng.i18n.txt