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

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

Re: [shell-script] Último token em uma linha


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Último token em uma linha
Date: Tue, 13 Mar 2007 11:09:29 -0300

Bruno, vc testou a saída desse comando ?

Não vai funcionar por 2 motivos

1) o awk precisa de alguma fonte de informação, como não há pipe para ele
nem arquivo, ele fica parado esperando entrar dados pela entrada padrão

2) o let, nesse contexto, não faz sentido. (ficaria tudo 1)

o proprio awk da conta do recado

awk '{print $1"."$NF}' arquivo

se vc quisesse fazer um laço, seria interessante vc usar while

I) cat arquivo | while read nome ; do   echo $nome | awk ... ; done

II) while read nome ; do  echo $nome | awk ...  done < arquivo

para usar o for, vc teria que alterar a variavel IFS

( IFS=$'\n' ; for i in `cat arquivo`; do echo $i ; done; )

coloquei os () para não alterar o valor da IFS corrente, assim roda tudo em
um subshell.

para usar o let, nesse contexto, ou alguma variavel numerica que vai sendo
incrementada, seria mais logico vc fazer uso de arrays

$ ( IFS=$'\n' NOMES=($(cat arquivo)) ; echo "um array com ${#NOMES[@]}
elementos" )
um array com 3 elementos

ou então fazer uso do head/tail ou awk ou sed para imprimir uma determinada
linha do arquivo.

em todos os casos, o awk le o arquivo de entrada e trata dos dados
facilmente (sem falar em performance), sem necessidade de maiores
malabarismos, entretanto se vc precisa fazer mais alguma coisa com os dados,
um laço no shell pode ser uma solução simples!

(( tudo isso e muito mais vcs poderão ver no curso de shell script/ awk
/etc  for crazy people no site do CentOSBr)
( e logo teremos ferramentas web usando estes recursos made in Brazil!))
( humm (isso (lembra (lisp $(mas sao subshells)))))

Abraços

On 3/13/07, Bruno Gunter Fricke <address@hidden> wrote:
>
>   Pode completar com um for... Do tipo
>
> $ for i in `cat arquivo`; do let i++; awk '{print $1"."$NF}'; done;
>
> On Tue, 2007-03-13 at 09:42 -0300, Tiago Barcellos Peczenyj wrote:
> > Pense em AWK
> >
> > $ echo 'CAROLINA DE FREITAS SCHUINDT' | awk '{print $1"."$NF}'
> > CAROLINA.SCHUINDT
> >
> > $ echo 'CAROLINA DE FREITAS SCHUINDT' | awk '{print
> > tolower($1"."$NF)}'
> > carolina.schuindt
> >
> > claro que pode ser feito em sed e outras ferramentas também
> >
> > T
> >
> > On 3/13/07, Edmilson Santana (listas) 
> > <address@hidden<edmilson.listas%40superig.com.br>
> >
> > wrote:
> > >
> > > Pessoal,
> > >
> > > Bom dia, estou querendo gerar uma listas de logins no formato
> > > <nome>.<ultimo nome>.
> > >
> > > Meu arquivo de entrada é no formato:
> > >
> > > ALEXANDRE VAZ DE ALMEIDA
> > > CAIO MOREIRA VAN DEURSEN
> > > CAROLINA DE FREITAS SCHUINDT
> > > .
> > > .
> > > .
> > >
> > > Alguma idéia ?
> > >
> > > []'s
> > >
> > > Edmilson Santana
> > >
> > >
> >
> > --
> > Tiago B Peczenyj
> > Linux User #405772
> >
> > # cd /pub
> > # more beer
> >
> > [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

# cd /pub
# more beer


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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