[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [shell-script] Processamento de lista de tarefas
From: |
Marcio Gil |
Subject: |
RE: [shell-script] Processamento de lista de tarefas |
Date: |
Wed, 21 Apr 2010 09:07:37 -0300 |
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;
> - 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> 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.
> >
>