forma tosca: $ cat xxx Campo1A Campo2A Campo1B Campo2B Campo1C Campo2C
$ tr '\n' '@' < xxx | sed -r 's/[EMAIL PROTECTED]([EMAIL PROTECTED])@.*\1@/&\n/g;y/@/\n/' Campo1A Campo2A Campo1B Campo2B Campo1C Campo2C ou seja, - eu junto tudo numa linha (troco nova linha por arroba) - s/[EMAIL PROTECTED]([EMAIL PROTECTED])@.*\1@/&\n/g é, basicamente, uma ER que casa com todas as linhas terminadas em uma determinada letra [EMAIL PROTECTED]([EMAIL PROTECTED])@.*\1@ [EMAIL PROTECTED] --> 0 ou mais caracteres não @ ([EMAIL PROTECTED]) -> 1 caracter não @ (agrupado!!!) X @.* -> @ seguido de qq quantidade de caracteres \1@ -> o mesmo caracter do grupo (X) seguido de @ complicado? $ tr '\n' '@' < xxx | sed -r 's/[EMAIL PROTECTED]([EMAIL PROTECTED])@.*\1@/&\n/g;' [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ Mais facil agora, eu imagino. Agora basta voltar ao normal com o comando y/@/\n/ 2008/5/5 Guilherme Gall <[EMAIL PROTECTED]>: > > > > > > > Prezados(as), > > Tenho um arquivo no seguinte formato: > > Campo1A = "valor" > Campo2A = "valor" > Campo3A = "valor" > [...] > CampoNA = "valor" > > Campo1B = "valor" > Campo2B = "valor" > Campo3B = "valor" > [...] > CampoNB = "valor" > > Campo1C = "valor" > Campo2C = "valor" > Campo3C = "valor" > [...] > CampoNC = "valor" > > [...] > > Como a lista é muito extensa para cada grupo (como grupo refiro-me ao > conjunto de campos separados por linhas em branco), uso o grep para > filtrar apenas os campos que desejo ver em cada momento. Assim, se > quero ver apenas os campos 1 e 2 de cada grupo, a saída na tela é: > > Campo1A > Campo2A > Campo1B > Campo2B > Campo1C > Campo2C > > Gostaria que a "cara" da saída fosse parecida com a do arquivo > completo, ou seja, com uma linha em branco entre cada grupo de campos. > Seria assim: > > Campo1A > Campo2A > > Campo1B > Campo2B > > Campo1C > Campo2C > > Alguém tem alguma idéia de como fazer isso? Pensei em separar os > grupos em arquivos distintos, depois aplicar o grep a cada arquivo e > imprimir uma linha em branco após cada saída do grep dentro de uma > iteração, mas acredito que exista uma forma mais simples de se fazer > isso. > > Obrigado, > > Guilherme M. Gall > -- Tiago B Peczenyj Linux User #405772 http://peczenyj.blogspot.com/ "what does not kill us makes us stronger"
