Fala Marcio, realmente eu tive uma bobeada na interpretação, pois aparentemente deveriam ser alteradas as linhas somente as linhas com a cadeia Model= e as outras permaneceriam imutáveis, porém foi isso que seu código propôs e a minha proposta fazia a mesma coisa.
Então, me retratando, para imprimir somente as linha que possuem a cadeia Model= pelo cmd sed, me ocorrem 2 processos: 1 - O que vc falou, usando a opção -n junto com o cmd p do sed, mas com uma observação interessante: vc fez echo $linha, qdo deveria ter feito echo "$linha". Sem as aspas, o <enter> virou espaço em branco e o resultado foi prejudicado. No outro exemplo vc fez echo linha, se esquecendo de usar $ e por isso não voltou nada. Veja o que acontece se usar o $: $ echo $linha | sed -n '/Model=/s/Model=\([^,]*\).*$/\1/p' Samsung 0411N $ echo "$linha" | sed -n '/Model=/s/Model=\([^,]*\).*$/\1/p' Samsung 0411N Ambos tiveram o mesmo resultado, porém é o que está entre aspas o mais correto. O ideal seria fazer: $ sed -n 's/Model=\([^,]*\).*$/\1/p' <<< "$linha" Samsung 0411N 2 - Usando o cmd d (deleta) do sed, que ficaria assim: $ echo "$linha" | sed '/Model=/!d;s/Model=\([^,]*\).*$/\1/' Samsung 0411N ou, melhorando, $ sed '/Model=/!d;s/Model=\([^,]*\).*$/\1/' <<< "$linha" Samsung 0411N Finalizando, entre as propostas apresentadas, eu ficaria com: $ sed -n 's/Model=\([^,]*\).*$/\1/p' <<< "$linha" Samsung 0411N Abraços, Julio Cursos de Shell e Zenity em 2 fins de semana? - Em SP ligue (11) 2125-4747 Curso de 07 a 11/12; - Em DF ligue (61) 3223-3000 Curso de zenity 09-10/01; - No RJ ligue (21) 2561-0867 Curso nos dias 5,6,12,13/12; - Turmas fechadas em outras cidades ligue (21) 8112-9988. 2009/12/1 Marcio Gil <[email protected]> > > > > > > -----Original Message----- > > From: Julio C. Neves > > > > 2009/12/1 Marcio Gil <[email protected] <marciomgil%40bol.com.br>> > > > > > > $ linha="Model=Samsung 0411N, Serial=00000005464, > > > blablabla=asdadqddq" > > > $ echo $linha | sed 's/Model=\([^,]*\).*$/\1/' > > > Samsung 0411N > > > $ > > > > > > O "sed" acima substitui a linha pelo que está após "Model=" e > que > > > não contenha ",". Cuidado apenas com as linhas que não contem > > > "Model=", pois neste caso o "sed" retornaria a linha inteira. > > > > > Marcio, a sua sacada foi excelente, mas esta última limitação que > vc > > colocou, pode ser contornada se fizermos: > > > > $ sed '/Model=/s/Model=\([^,]*\).*$/\1/' Arquivo > > > > Desculpe Julio, mas não funciona: > > > $ linha="Model=Samsung 0411N, > Serial=00000005464,blablabla=asdadqddq" > $ echo $linha | sed '/Model=/s/Model=\([^,]*\).*$/\1/' > Samsung 0411N > $ echo linha | sed '/Model=/s/Model=\([^,]*\).*$/\1/' > linha > $ > > Imprimiu a linha inteira mesmo quando não havia "Model=". > > No entanto funciona desta maneira: > > $ echo $linha | sed -n '/Model=/s/Model=\([^,]*\).*$/\1/p' > Samsung 0411N > $ echo linha | sed -n '/Model=/s/Model=\([^,]*\).*$/\1/p' > $ > > Mas desta forma nem precisa repetir o padrão: > > $ echo $linha | sed -n 's/Model=\([^,]*\).*$/\1/p' > Samsung 0411N > $ echo linha | sed -n 's/Model=\([^,]*\).*$/\1/p' > $ > > O "-n" suprime a impressão automatica, então o comando "p" imprime > apenas se houver "Model=". > > Abraço. > > Marcio Gil. > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [email protected] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
