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

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

Re: [shell-script] Re: contagem de caracteres


From: Julio C. Neves
Subject: Re: [shell-script] Re: contagem de caracteres
Date: Fri, 18 Jan 2008 10:56:46 -0200

O problema do Sw Proprietário é esse. Apesar do Unix ter sido o primeiro
sistema operacional com padrões abertos, cada vendor faz a implementação
desses padrões da forma que deseja e isso causa uma Babel. Assim sendo, não
podemos afirmar nada sobre o ksh, sem especificar a qual ksh vc está se
referindo.

Eu trabalhava em um AT&T SVr4 e ele não tinha ${///}, e não conheço ksh que
use reg exp em brace expansion (${...}) como vc fez. O que eles usam é
Pattern Matching e por isso só entendem os caracteres coringa (*?[]).

Sobre o mesmo tema, a proposta do mop era medir o tamanho da cadeia antes,
matar as vírgula e medir o tamanho e subtrair o tamanho inicial do final.
Mas ele fez a subtração usando a notação $[var1-var2] e disse que para
funcionar no Unix (não sei qual) teve de usar a notação $((var1-var2)). Em
contrapartida, tenho quase que certeza que o ksh do AIX só permite
construção do tipo $[var1-var2]. É fogo!

Por isso bom mesmo é o Bash. Ele topa a sintaxe de todos os ksh e de quebra,
herdou algumas qualidades do csh.

Abraços,
Julio


Em 18/01/08, Fabiano Caixeta Duarte <address@hidden> escreveu:
>
>   Em 17/01/08, Julio C. Neves <address@hidden<julio.neves%40gmail.com>>
> escreveu:
> >
> > Fala Fabiano,
> > isso foi a primeira coisa que me ocorreu, porém tenho 90% de certeza que
> > este brace expansion (${...}) não funciona no ksh da Sun (Sw
> Proprietário
> > é
> > muito ruim) :)
> >
> > Abração,
> > Julio
> >
> > Em 17/01/08, Fabiano Caixeta Duarte <address@hidden<fcd.listas%40gmail.com>>
> escreveu:
> > >
> > > --- Em address@hidden<shell-script%40yahoogrupos.com.br>
> > <shell-script%40yahoogrupos.com.br>,
>
> > > "Julio C. Neves"
> > > <julio.neves@...> escreveu
> > > >
> > > > Dei a solução baseado no exemplo. Para o novo caso que vc criou,
> basta
> > > > acrescentar o sublinha no tr. Assim:
> > > >
> > > > Prompt> expr length `echo
> > > > "ddmmyy,hhmmss,nome_do_arquvio,tipo,,,,,versao,,,,," | tr -d
> > [:alnum:]_`
> > > > 13
> > > >
> > > > E está restabelecida a paz... :)
> > > > Julio
> > > >
> > > >
> > > > Em 17/01/08, miranda <miranda@...> escreveu:
> > > > >
> > > > > bem sacado mas vai falhar em alguns casos :
> > > > > exemplo
> > > > > expr length `echo
> > > "ddmmyy,hhmmss,nome_do_arquvio,tipo,,,,,versao,,,,," |
> > > > > tr -d [:alnum:]`
> > > > > 15
> > > > > On Thu, 2008-01-17 at 11:03 -0200, Julio C. Neves wrote:
> > > > > > Prompt> expr length `echo
> > > > > > "ddmmyy,hhmmss,nomearquvio,tipo,,,,,versao,,,,," |
> > > > > > tr -d [:alnum:]`
> > > > > > 13
> > > > > >
> > > > > > Em 17/01/08, Elvio Barbalho <elvio.barbalho@...> escreveu:
> > > > > > >
> > > > > > > Senhores bom!!!!!
> > > > > > >
> > > > > > > estou precisando contar quantas virgulas tenho em determinada
> > > linha.
> > > > > > as
> > > > > > > virgulas são o delimitadores de campos dentro de um arquivo.
> > > > > > >
> > > > > > > Ex de uma linha:
> > > > > > >
> > > > > > > ddmmyy,hhmmss,nomearquvio,tipo,,,,,versao,,,,,
> > > > > > >
> > > > > > > como podemos ver existem campos que nao nenhuma informação.
> > > > > > >
> > > > > > > tentei algo do tipo:
> > > > > > >
> > > > > > > :>echo ddmmyy,hhmmss,nomearquvio,tipo,,,,,versao,,,,, | wc -w
> > > > > > > 1
> > > > > > >
> > > > > > > :>OFS=','
> > > > > > >
> > > > > > > :>echo $OFS
> > > > > > > ,
> > > > > > >
> > > > > > > :>echo ddmmyy,hhmmss,nomearquvio,tipo,,,,,versao,,,,, | wc -w
> > > > > > > 1
> > > > > > >
> > > > > > > Mais não deu certo.
> > > > > > >
> > > > > > > Lembrando que estou usando o Ksh(Solaris) e muitas das
> > facilidades
> > > > > > do Bash
> > > > > > > não tenho disponível.
> > >
> > > Gente,
> > >
> > > O rapaz não quer só as vírgulas? Então é só retirar todo o resto ;)
> > >
> > > expr length
> > > $(temp="ddmmyy,hhmmss,nome_do_arquivo,tipo,,,,,versao,,,,,"; echo
> > > ${temp//[^,]/})
> > >
> > > Tá feito!
> > >
> > > Fabiano.
> > >
> > --
> > Abraços,
> > Julio
> >
>
> De fato não havia me atentado a este importante detalhe.
>
> Testando no ksh do linux (ksh --version: version sh (AT&T Labs Research)
> 1993-12-28 o+)
> ele até cuidou direitinho do $() e do ${///}, mas se atrapalhou com a er
> [^,].
>
> --
> Fabiano Caixeta Duarte
> Especialista em Redes de Computadores
> Linux User #195299
> Ribeirão Preto - SP
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Abraços,
Julio


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



reply via email to

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