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: Julio C. Neves
Subject: Re: [shell-script] Último token em uma linha
Date: Tue, 13 Mar 2007 11:51:28 -0300

Fazendo em bash puro:
$ echo $Nome
CAROLINA DE FREITAS SCHUINDT
$ echo ${Nome##* }, ${Nome%% *}
SCHUINDT, CAROLINA

Para entender melhor veja:
http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo009#Expans%E3o_de_par%E2metros

Um abração,
Julio
:wq



Em 13/03/07, Tiago Barcellos Peczenyj <address@hidden> escreveu:
>
>   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<gunter%40infolink.com.br>>
> 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>
> <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]
>
>  
>


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



reply via email to

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