shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: SED - como ir selecionando trechos de acordo com


From: Édnei Rodrigues
Subject: Re: [shell-script] Re: SED - como ir selecionando trechos de acordo com um padrão
Date: Mon, 19 Sep 2016 13:16:22 -0300

Olá pessoal, obrigado pelo interesse.

Eu não respondi antes porque eu trabalhei 15 dias direto e, assim, peguei esse findi para descansar.

Tentarei explanar melhor qual é a intenção aqui. 

Eu tenho um script chamado topology.sh que ao usar como parâmetro printConnectorStatus, tu podes passar a topologia e o conector. Essa é sintaxe:

/topology.sh printConnectorStatus CADIRTEWS object=tews_sicrediUsuario_merge,dv=so_caidmtews_userpassword

Eu já pensei no código e já coloquei num txt todos as topologias e conectores existentes. Para cada topologia, eu coloquei um '.' no início para identificá-lo. Para caracterizar o fim da lista de comandos, eu inseri uma linha em branco.

Minha idéia é ler esse arquivo, montar o comando acima e executar ( o retorno será um STARTED ou DOWN ) para cada topologia e seus conectores.

Por isso, eu estava tentando montar um SED para pegar a uma Topologia de vez e ir executando seus respectivos conectores. Logo, pensando numa forma eficiente, seria algo assim:

Comando SED 'pegar nome depois do .' > TOPOLOGIA_NOME

Comando SED 'PEGAR proxima linha depois do primeiro ponto até a proxima linha branca' > Arquivo temporário ou Variável

LOOP leitura da saida acima

/.topology.sh printConnectorStatus TOPOLOGIA_NOME Var_loop

Peço desculpas por não ter sido mais rápido na resposta, mas eu estava cansado mesmo.

Att,

Édnei Rodrigues


Em 17 de set de 2016 2:02 PM, "Rodrigo Cunha address@hidden [shell-script]" <address@hidden> escreveu:
 

Ednei,crie uma amostra pra galera entender qual é a sua finalidade,  coloque em anexo um arquivo a ser processado (INPUT) e mais dois; um contendo um arquivo com o processamento desejado e um contendo um arquivo com o erro que vc encontrou.
Lógicamente, crie os arquivos com uma pequena amostra, vai ser mais simples de entender o que vc quer fazer.
Abração!

Em 17 de setembro de 2016 09:45, 'Julio C. Neves' address@hidden [shell-script] <address@hidden.br> escreveu:
 

Itamar, não havia respondido nada, pq minhas dúvidas foram exatamente iguais às suas.


Em 17 de set de 2016 09:33, "address@hidden [shell-script]" <address@hidden.br> escreveu:
 

Caro Édnei

Fiquei com algumas dúvidas sobre o que deseja e sobre o arquivo de exemplo:
1 - A cada trecho que começa por uma linha iniciado por um ponto ( como vc descreveu ), seguida de letras maúsculas até o final da linha ( minha dedução cujo regex seria "/\.[A-Z]+$/" ) e que também poderia ser linhas iniciadas por ".CADIR", e outra por ".COMPUTE".

2 - O final de cada bloco há uma linha vazia, todavia no exemplo que passou não chegou contendo. Isso pode ser um problema pela maneira como chegou via o fórum, por isso pergunto.
Se for isso a segunda parte da regex poderia ser limitada assim /^$/ ou /^[[:blank:]]*$/ se houver a possibilidade de conter espaços ou tabulações.

3 - O último comando que lista apenas os "títulos" não deveria ser:
$ sed -n '/^\./p' listas_conectores.txt
Do jeito que passou comigo listou apenas um, e não todos.

4 - Para cada trecho desejado vc quer fazer um processamento distinto dentro do sed.
Se é isso um filtro generalista de começo não serve, como a regex "/\.[A-Z]+$/" que sugeri a pouco e talvez o uso por limite inicial por número da linha como vc usou pode ser ineficaz, caso o conteúdo seja variável.
Para isso vc pode montar os blocos definindo explicitamente o começo e o final, por exemplo:
$ sed -n '/\.CADIRIDS/,/^$/ {
    *** comandos para esse trecho ***
    p
}' listas_conectores.txt

ou se precisar limitar o fim de outra forma com o uso do ponto inicial:
$ sed -n '/\.CADIRIDS/,/^\./ {
    /\./ { /\.CADIRIDS/!q; }
    *** comandos para esse trecho ***
    p
}' listas_conectores.txt


Não sei se fui claro em minhas dúvidas e se o que sugeri lhe ajuda.

De toda forma, seria como abordaria usando o sed.

[]'s
Itamar




--
Atenciosamente,
Rodrigo da Silva Cunha


reply via email to

[Prev in Thread] Current Thread [Next in Thread]