shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RES: [shell-script] Acho que eh eval


From: Gustavo Chaves
Subject: Re: RES: [shell-script] Acho que eh eval
Date: 28 Apr 2005 16:10:22 -0300
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.4

>>>>> On Thu, 28 Apr 2005 15:16:09 -0300, Julio Cezar Neves - DATAPREVRJ 
>>>>> <address@hidden> said:

  > Fala Gustavo,
  > achei muito bacana sua exposição, mas não estou entendendo mais nada pelo
  > seguinte: até onde eu saiba, uma das grandes vantagens do xargs é que ele
  > trata simultaneamente a maior massa de dados possível (limitado pela memória
  > ou parâmetro do sistema), exceto qdo vc usa as opções -l ou -n qdo vc indica
  > qtas informações ou linhas vc deseja tratar.

O problema é a opção -i.  Veja o que diz o man:

       --replace[=replace-str], -i[replace-str]
              Replace occurences of replace-str in the initial
              arguments with names read from standard input.  Also,
              unquoted blanks do not terminate arguments.  If
              replace-str is omitted, it defaults to "{}" (like for
              `find -exec').  Implies -x and -l 1.

Viu?  Ela implica em '-l 1'.

  > Mas somente como complemento, veja a execução no ambiente de teste:

  Prompt> grep -f <(cat Relatorio_de_nomes_incompleto.txt | xargs  -i echo
  > ^{}) <(ls --color=none)
  > AeroSmith
  > Jefferson
  > Jurema
  Prompt> ls | grep -f <( <Relatorio_de_nomes_incompleto.txt xargs -i echo
  > ^{})
  Prompt> ls | grep -f <(sed 's/^/\^/' Relatorio_de_nomes_incompleto.txt)

  > Ou seja: teóricamente a sua solução está perfeita, mas no meu velho Bash não
  > funciona e este é um problema que freqüentemente me defronto, deveria
  > funcionar, não funciona e não sei a quem recorrer devido à especificidade.

        Esquisito.  Aqui funciona.  (Aliás, depois de já ter cometido mais de
        uma gafe mandando scripts errados pra lista eu procuro sempre testar
        aqui antes de postar. :-)
        
        Veja:
        
        gnu$ uname -a
        Linux gnu.cpqd.com.br 2.6.8-1-686 #1 Thu Nov 25 04:34:30 UTC 2004 i686 
GNU/Linux
        
        gnu$ bash --version
        GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
        Copyright (C) 2002 Free Software Foundation, Inc.
        
        gnu$ ls -l
        total 32
        drwxrwxr-x  2 gustavo gustavo 4096 2005-04-28 12:56 AeroSmith
        drwxrwxr-x  2 gustavo gustavo 4096 2005-04-28 12:56 Jefferson
        drwxrwxr-x  2 gustavo gustavo 4096 2005-04-28 15:15 Jeffeso
        drwxrwxr-x  2 gustavo gustavo 4096 2005-04-28 12:56 Jurema
        -rw-rw-r--  1 gustavo gustavo   24 2005-04-28 12:56 
Relatorio_de_nomes_incompleto.txt
        
        gnu$ ls | grep -f <( <Relatorio_de_nomes_incompleto.txt xargs -i echo 
^{})
        AeroSmith
        Jefferson
        Jeffeso
        Jurema
        
        gnu$ ls | grep -f <(sed 's/^/\^/' Relatorio_de_nomes_incompleto.txt)
        AeroSmith
        Jefferson
        Jeffeso
        Jurema

Gustavo.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]