Esse é o problema do comando q no lugar errado

$ cat xxx
321
852
vazio
vazio
vazio

$ sed -n '/vazio/{=;q}' xxx
3

$ sed "$(sed -n '/vazio/{=;q}' xxx)s/vazio/qqcoisa/" xxx
321
852
qqcoisa
vazio
vazio

Sacou?

2008/4/29 César Vianna <[EMAIL PROTECTED]>:
>
>
>
>
>
>
> ok.
>
>  mas o resultado esperado seria:
>
>  teste
>  teste
>  qualquercoisa
>  a
>  a
>
>  Teria que apenas substituir a primeira linha encontrada e preservar as
>  demais
>
>  2008/4/29 Flavio Junior <[EMAIL PROTECTED]>:
>
>
>  > q
>  >
>  > [EMAIL PROTECTED]:~]# echo -e 'teste\nteste\na\na\na'
>  > teste
>  > teste
>  > a
>  > a
>  > a
>  > [EMAIL PROTECTED]:~]# echo -e 'teste\nteste\na\na\na' | sed
>  > '/a/{s/.*/qualquercoisa/;q}'
>  > teste
>  > teste
>  > qualquercoisa
>  > [EMAIL PROTECTED]:~]#
>  >
>  > mim ser preguiçoso..
>  >
>  > Pra casar vazio pode usar: ^$
>  >
>  > --
>  >
>  > Flavio do Carmo Junior
>  >
>  > 2008/4/29 César Vianna <[EMAIL PROTECTED] <cesar.vianna%40gmail.com>
>
>  > >:
>  >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > >
>  > > Tenho um arquivo texto com o seguinte conteúdo
>  > >
>  > > 321
>  > > 852
>  > > vazio
>  > > vazio
>  > > vazio
>  > >
>  > > Quero trocar a primeira ocorrência de "vazio" por "qualquercoisa"
>  > >
>  > > Fiz assim
>  > >
>  > > sed "s/vazio/qualquercoisa/" estac.txt
>  > >
>  > > e
>  > >
>  > > sed "s/vazio/qualquercoisa/1" estac.txt
>  > >
>  > > Mas em ambas opções ele troca todas as ocorrências de vazio
>  > >
>  > > Sei que tem alguma opção para interromper na primeira ocorrência, mas
>  > não
>  > > estou lembrando. Como diz o Júlio: "Para o sed não ser guloso"
>  > >
>  > > [As partes desta mensagem que não continham texto foram removidas]
>  > >
>  > >
>  >
>  >
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>  



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"

Responder a