Eu tenho algo que quase funciona do jeito que você quer. O que essa expansão faz é:
- Slurp no arquivo, usando; como o separador.
- Exclua as linhas com # nelas (ou seja, comentários).
- Ele deve pular linhas em branco, mas meu regex não é compatível, ele ainda inclui essas linhas em branco, então eu apenas o removi e deixei o bloco {{} {}} lá.
- Extraia o item antes de: em cada linha e extraia o domínio dele.
- Mash tudo na lista.
Eu não digo que seja exatamente o que você precisa, mas mostra como as listas podem ser analisadas e analisadas.
CentOS58[root@ivwm41 exim]# more test_list.cf
[email protected]: [email protected]
# ignore this line
[email protected]: [email protected]
[email protected]: [email protected]
CentOS58[root@ivwm41 exim]# exim -be '${reduce {<; ${readfile{/etc/exim/test_list.cf}{;}} } {} {${if or{ {match{$item}{#}} {match{$item}{#}} } {$value} {$value:${sg {${extract{1}{:}{$item}}} {^.*@}{} }}}}}'
:test.com:test.com:hugo.com
Se você espalhar a expansão logicamente em suas partes individuais, será assim:
exim -be '${reduce {<; ${readfile{/etc/exim/test_list.cf}{;}} }
{}
{${if or{ {match{$item}{#}} {match{$item}{#}} }
{$value}
{$value:${sg{${extract{1}{:}{$item}}} {^.*@} {}}}}
}
}
'
Uma coisa que ainda precisa ser consertada é a liderança: não deveria estar lá. Eu não tenho 100% de certeza do porquê: - / e eu realmente não tenho tempo para aprofundar isso. A lógica precisa ser massageada um pouco para detectar qualquer condição que esteja causando o aparecimento do cólon inicial e, em seguida, o resultado deve ser uma lista de domínios que você pode usar como condição.