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

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

Re: [shell-script] Processamento de lista de tarefas


From: Julio C. Neves
Subject: Re: [shell-script] Processamento de lista de tarefas
Date: Wed, 21 Apr 2010 11:25:53 -0300

Fala Márcio,
na solução que eu propus, a única coisa que mudaria seria o case. Mas
estecase tb poderia ser substituído por um for, se os subíndices estivessem
em vetores e vc fosse montando dinamicamente os índices dentro do loop do
for.

Acho que é uma solução que deveria ser tentada exclusivamente como exercício
de lógica, já que a "matada" que vc deu em awk é *muito melhor*. Preciso
exercitar mais o meu awk, pois é uma ferramenta excelente.

Há pouco tempo escrevi cerca de 50 páginas A4 sobre esta linguagem, mas por
falta de tempo parei por aí. Passei o material para um amigo dar pitacos e
escrever mais sobre o tema, mas aparentemente ele tem o mesmo problema que
eu, pois nem o recebimento do material ele acusou. Tenho de arrumar tempo
para continuar esta tarefa e, quem sabe, não sai uma nova publicação.

Abraços,

Cursos de* **Shell* e *Zenity* em 2 fins de semana?

- Aracaju turma de *Shell* em 12/05 - address@hidden;

- DF turma de *Shell* em 12/06 - ligue* (61)3223-3000*;

- RJ turma de *Shell* em 14/06 - ligue (21)2210-6061;

- Floripa turma de *Shell* e *Zenity* 12/07 – address@hidden;

- Turmas fechadas em outras cidades ligue (21)8112-9988.



Em 21 de abril de 2010 09:07, Marcio Gil <address@hidden> escreveu:

>
>
> Júlio, é isso mesmo. Recalcular os índices das tarefas? Idéia
> interessante, teoricamente tem que bater com a lista gerada.
>
> O único problema é que na prática a árvore de tarefas chega a dez
> níveis, o script vai ficar um pouco grande...
>
> A script em awk que eu havia feito não considerava mais de 9
> tarefas em um nível, então eu refiz e coloquei em um arquivo:
>
> #!awk -f
> /^ *[0-9]*\./{
> n=match($0,"[0-9]+.")
> p=index($0,".")
> i=(n-1)/2
> a[i]=substr($0,n,p+1-n)
>
> for (j=0;j<=i;j++){
> printf a[j]
> }
> print substr($0,p+1)
>
> }
>
> > -----Original Message-----
> > From: Julio C. Neves
> >
> > Marcio,
> > vê se é isso. Vou montar a lista dentro de uma variável,
> > indentando:
> > Lista="1. Desenho
> > 1. Sistema de coordenadas
> > 1. Criar o método X()
> > 2. Criar o método Y()
> > 2. Primitivas gráficas
> > 1. Desenho de linhas
> > 2. Desenho de quadrados
> > 2. Etc"
> >
> > Mudando o IFS:
> > IFS='
> > '
> >
> > O programa propriamente dito:
> > while read linha
> > do
> > sp=$(grep -oE '^ +' <<< "$linha")
> > case "${#sp}" in
> > 0) ind=$[++ind1].
> > ind2=
> > ind3=
> > ;;
> > 2) ind=$ind1.$[++ind2].
> > ind3=
> > ;;
> > 4) ind=$ind1.$ind2.$[++ind3].
> > esac
> > echo $ind$(cut -f2- -d. <<<"$linha")
> > done <<< $Lista
> >
> > Abraços,
> > Julio
> > Cursos de Shell e Zenity em 2 fins de semana?
> > - Aracaju turma de Shell em 12/05 - 
> > address@hidden<andersonrizada%40gmail.com>
> ;
> > - RJ turma de Shell em 14/06 - ligue (21)2210-6061;
> > - Turmas fechadas em outras cidades ligue (21) 8112-9988.
> >
> >
> > Em 20 de abril de 2010 22:14, Marcio Gil
> > <address@hidden <marciomgil%40bol.com.br>> escreveu:
> >
> > >
> > >
> > > Na verdade o que determina o nível é a endentação, ou seja,
> > > os espaços no início da linha. Os termos "Projeto", "Tarefa"
> > > e "sub-tarefa" são só para exemplificar, poderiam ser
> > > qualquer outra coisa.
> > >
> > > Desculpe se não consegui ser mais claro. Vou dar outro
> > > exemplo com os espaços indicados por <SP> (acredito que o meu
> > > e-mail tenha chegado sem eles :-)
> > >
> > > 1. Desenho
> > > <SP><SP>1. Sistema de coordenadas
> > > <SP><SP><SP><SP>1. Criar o método X()
> > > <SP><SP><SP><SP>2. Criar o método Y()
> > > <SP><SP>2. Primitivas gráficas
> > > <SP><SP><SP><SP>1. Desenho de linhas
> > > <SP><SP><SP><SP>2. Desenho de quadrados
> > > 2. Etc.
> > >
> > > Deveria ficar:
> > >
> > > 1. Desenho
> > > 1.1. Sistema de coordenadas
> > > 1.1.1. Criar o método X()
> > > 1.1.2. Criar o método Y()
> > > 1.2. Primitivas gráficas
> > > 1.2.1. Desenho de linhas
> > > 1.2.2. Desenho de quadrados
> > > 2. Etc.
> > >
> > > No caso talvez eu pudesse utilizar as expressões regulares:
> > >
> > > '^[0-9]' para o nível 0
> > > '^ [0-9]' para o nível 1
> > > '^ [0-9]' para o nível 2
> > > '^ [0-9]' para o nível 3
> > > '^ [0-9]' para o nível 4
> > >
> > > e assim por diante. Provavelmente eu tenha mesmo que criar um
> > > laço "for" com vários "if"s, porém vou ver se consigo alguma
> > > coisa menor com o awk.
> > >
> > > Abraços,
> > >
> > > Marcio Gil.
> > >
> >
>
>  
>


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



reply via email to

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