Acredito que a melhor solução é com o IFS=: para ler vários dados do
/etc/passwd.

$ time awk -F: '{print $1}' /etc/passwd > /dev/null
real    0m0.006s
user    0m0.004s
sys     0m0.004s

$ time cut -f1 -d: /etc/passwd > /dev/null
real    0m0.003s
user    0m0.004s
sys     0m0.000s

No caso, geralmente se precisa pegar vários dados de cada linha e
separá-los em variáveis diferentes para executar uma determinada
tarefa, sendo necessário o laço (while), e nesse caso, as formas
acima, não são equivalente com as formas anteriores.


A forma mais rápida foi essa:
IFS=:
$ time while read usuario group ; do echo $usuario X $group ; done <
<(cut -f1,3 -d: /etc/passwd)

real    0m0.214s
user    0m0.092s
sys     0m0.056s

E claro, deve-se evitar ao máximo o uso de cut/awk para separar
variáveis dentro de um laço... Sem nenhuma dúvida, a melhor forma, é
ajustar o IFS a entrada de dados, para poder usar um mútiplo read com
o while, como o Júlio indicou.

É importante lembrar que caso seja necessário mudar o IFS dentro do
while, deve usar novamente IFS=: antes do final do while.

[]s

-- 
Reinaldo Carvalho
Debian Sarge 3.1 - Linux User: #238310
Prodepa - [EMAIL PROTECTED]


---------------------------------------------------------------------
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

 



Responder a