> -----Original Message----- > From: Julio C. Neves > > 2009/12/1 Marcio Gil <[email protected]> > > > > $ 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.
