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

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

Re: SED - como ir selecionando trechos de acordo com um padrão


From: itamarnet
Subject: Re: SED - como ir selecionando trechos de acordo com um padrão
Date: 17 Sep 2016 05:33:40 -0700

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
reply via email to

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