[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Re: Como sinalizo que um parametor, lido pela entrada
From: |
Flavio Junior |
Subject: |
Re: [shell-script] Re: Como sinalizo que um parametor, lido pela entrada padrão, terminou? |
Date: |
Tue, 18 Dec 2007 08:58:59 -0200 |
Na verdade.. nesse caso o redirecionamento é desnecessário, pois o
grep já espera o nome do arquivo, ou seja:
$ grep "linha 2" texto.txt
Ao rapaz que abriu a thread, que eu já nem sei mais quem é..
Quando dizemos que um comando vai ler da stdin (entrada padrão), quer
dizer que um fluxo pode ser redirecionado pra ele e ele vai entender
aquilo como entenderia se fosse um arquivo sendo aberto. Não só texto
podemos fazer isso.. o "tar" é um exemplo classico disso.
Quando usamos o "|" (pipe) para ligar dois comandos, o que estamos
fazendo é jogando a saida de um como entrada de outro.
Então veja:
$ echo teste | tr 'e' 'X'
tXstX
$ tr 'e' 'X'
teste # isso eu escrevi, direto na stdin
tXstX # essa foi a resposta do "tr" de acordo com minha entrada anterior
As duas coisas são identicas, a unica coisa que na primeira ao invés
de eu escrever o texto, eu usei um redirecionamento pra incrementar a
stdin. Mas o que acontece é que a stdin não fica mais esperando o NOME
do arquivo, ela fica encarregada direto do fluxo de informações.
Espero ter conseguido explicar, é um assunto bem basico mas chato de entender..
Qualquer coisa de uma lida nos "papo de botequim" do Julio Cesar, e
nas paginas do www.aurelio.net ... Lá voce vai acabar entendendo na
marra, se for o caso :).
--
Flávio do Carmo Júnior
On Dec 18, 2007 8:43 AM, Alan Diones <address@hidden> wrote:
>
>
>
>
>
>
> amigos, evitem utilizarem "|" pipe, o exemplo abaixo poderia ter
> resolvido assim:
> grep "linha 2" < texto.txt
>
> o shell trabalha melhor assim.
> Alan Diones
> Em Ter, 2007-12-18 às 00:04 -0200, Arthur Renato Mello escreveu:
> > Andre,
> >
> > "se [caminho do texto o qual será pesquisado] não for especificado,
> > lê da entrada padrão", nao quer dizer que o grep espera o caminho do
> > arquivo na entrada padrao, mas sim o texto propriamente dito.
> >
> > No exemplo:
> >
> > $ cat texto.txt
> > linha 1
> > linha 2
> > linha 3
> >
> > Se passarmos o caminho do arquivo no grep:
> >
> > $ grep "linha 2" texto.txt
> > linha 2
> >
> > Caso eu nao passe o caminho do arquivo, o grep ficara esperando que eu
> > insira o texto na entrada padrao. Para encerrar a entrada eu uso
> > Ctrl-D:
> >
> > $ grep "linha 2"
> > texto.txt
> > *Ctrl-D* (Nao o texto mas sim as teclas Ctrl + D :)
> >
> > Porem nesse caso o grep nao encontra nada, pois em "texto.txt" nao
> > existe o padrao "linha 2".
> >
> > Mas nesse caso:
> >
> > grep "linha 2"
> > linha 1
> > linha 2
> > linha 2
> > linha 3
> > *Ctrl-D*
> >
> > Eu digitei "linha 1" o que nao casa com o padrao, o grep nao faz nada.
> > Porem, quando eu digito "linha 2", que casa com o padrao, e teclo
> > Enter o grep automaticamente repete a linha.
> >
> > O uso do grep com textos da entrada padrao eh muito util para
> > redirecionamentos.
> > Como nesse caso INUTIL mas que exemplifica bem :)
> >
> > $ cat texto.txt | grep "linha 2"
> > linha 2
> >
> > Espero ter sido claro. E se cometi algum erro o pessoal da lista
> > podera corrigir :D
> >
> > []s
> > Arthur
> >
> > On Dec 17, 2007 10:35 PM, andre.andrade1 <address@hidden>
> > wrote:
> > >
> > >
> > >
> > >
> > >
> > >
> > > Me desculpem, pessoal, eu fui pouco claro.
> > > A minha duvida, na realidade, refere-se a um comentário do livro do
> > > julio neves(programação shell linux), 6 edição, pagina 24.
> > > Ele fala mais ou menos isso:
> > > A sintaxe do comando grep é: grep [-opçoes] [texto a ser procurado]
> > > [caminho do texto o qual sera pesquisado]
> > > e, está escrito mais ou menos isso: "se [caminho do texto o qual
> > será
> > > pesquisado] não for especificado, lê da entrada padrão".
> > > Pelo que entendi, se eu der um "$grep -i palavra" e não especificar
> > o
> > > arquivo alvo do grep, o shell espera que eu coloque o caminho do
> > > arquivo na stdin. Ao colocar o endereço do arquivo na stdin, como eu
> > > sinalizo ao shell que eu já terminei de colocar o caminho para que o
> > > grep seja executado?
> > >
> > >
> >
> >
> >
> >
>
>
- Re: [shell-script] Como sinalizo que um parametor, lido pela entrada padrão, terminou?, mop, 2007/12/14
- Re: [shell-script] Como sinalizo que um parametor, lido pela entrada padrão, terminou?, Flavio Junior, 2007/12/14
- Re: Como sinalizo que um parametor, lido pela entrada padrão, terminou?, andre.andrade1, 2007/12/17
- Re: [shell-script] Re: Como sinalizo que um parametor, lido pela entrada padrão, terminou?, Arthur Renato Mello, 2007/12/17
- Re: [shell-script] Re: Como sinalizo que um parametor, lido pela entrada padrão, terminou?, Alan Diones, 2007/12/18
- Re: Como sinalizo que um parametor, lido pela entrada padrão, terminou?, andre.andrade1, 2007/12/18
- Re: [shell-script] Re: Como sinalizo que um parametor, lido pela entrada padrão, terminou?,
Flavio Junior <=