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.