Eu tenho dois arquivos: master.tbl
e sites.lst
O arquivo master.tbl
é uma lista de sites, com suas configurações de porta, nomes de portas, endereços IP, etc. Há linhas que contêm descrições de sites, comentários, etc., mas são irrelevantes. As linhas que contêm as configurações do site são organizadas dessa forma e são delimitadas por espaços.:
{server} {SITE NAME} {port name} {configuration flags}
Os nomes das portas consistem no nome do site em minúsculas, um traço, um "P" e o número da porta.
Exemplo:
server01 HAWAII23-USR hawaii23-P1 blah-configuration-blah-arguments
server01 HAWAII23-ADM hawaii23-P2 blah-configuration-blah-arguments
server01 HAWAII23-ADM hawaii23-P3 blah-configuration-blah-arguments
server01 HAWAII23-USR hawaii23-P4 blah-configuration-blah-arguments
sites.lst
é uma lista de sites para os quais preciso pesquisar o arquivo master.tbl
.
Eu preciso comentar (insira um #
no início da linha) e extraia o nome do servidor e o nome da porta (em um arquivo denominado stoplist.lst
) de cada linha que atenda a TODOS os critérios a seguir:
- contém qualquer nome de site listado em
sites.lst
- contém "-ADM"
- tem um número de porta maior que '2' (exemplo:
hawaii23-P3
)
No exemplo acima, o arquivo master.tbl
ficaria assim:
server01 HAWAII23-USR hawaii23-P1 blah-configuration-blah-arguments
server01 HAWAII23-ADM hawaii23-P2 blah-configuration-blah-arguments
#server01 HAWAII23-ADM hawaii23-P3 blah-configuration-blah-arguments
server01 HAWAII23-USR hawaii23-P4 blah-configuration-blah-arguments
... e stoplist.lst
conteria (assumindo que HAWAII23
está em sites.lst
):
server01 hawaii23-P3
master.lst
é quase 300.000 linhas, portanto, fazer isso manualmente seria ... ruim.