Solução usando Perl, faz edição no local
perl -i -pe 's/(\s\S+?)(\.?)\s*$/$1$2$1.com\n/' /etc/hosts
-
\s corresponde a um caractere de espaço em branco
-
\S+? não-ganancioso corresponde a 1 ou mais caracteres não-brancos
-
\.? greedy match 0 ou 1 vezes o. personagem (para cuidar de possíveis extras. no final da linha)
-
\s*$ greedy corresponde a qualquer caractere de espaço em branco no final da linha
-
$1$2 retém a última coluna, excluindo os caracteres de espaço em branco no fim da linha
-
$1.com\n add .com e caractere de nova linha
altere -i para -i.bkp para ter um backup (/etc/hosts.bkp) do arquivo original
Observação: essa expressão regular não funciona com sed , pois o BRE / ERE não é compatível com correspondência não-voraz