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: Marcio Gil
Subject: RE: [shell-script] Processamento de lista de tarefas
Date: Tue, 20 Apr 2010 23:36:05 -0300

Legal,

acho que consegui um ponto de partida com o awk:

$ cat temp.txt 
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.

$ awk '/^ *[0-9]\./{ p=match($0,"[0-9]."); i=(p-1)/2;
a[i]=substr($0,p,2); for (j=0;j<=i;j++){printf a[j]}; print
substr($0,p+2) }' temp.txt 
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.

A partir daqui eu posso complementar com sed:

awk '...' | sed 's/^\([0-9.]*\)\(.*\)(risk: \([^)]*\)).*(allocated
to: \([^)]*\)) (allocated by: \([^)]*\)).*/\1\t\2\t\3\t\4\t\5/'

A não ser que exista um equivalente ao comando 's//' do sed no awk,
aí eu poderia escrever um script em awk puro.

Se alguém puder me dar uma luz ou uma sugestão para melhorar o meu
script eu agradeço.
 

> -----Original Message-----
> From: address@hidden
> 
> 
> Testado: 
> 
> eric@NOTEERIC:~$ cat teste.txt
> 1. Projeto (risk: 6) (allocated to: Sicrano+Beltrano) 
> (allocated by: Fulano)
> 1. Primeira tarefa (risk: 6) (allocated to: Sicrano+Beltrano) 
> (allocated by: Fulano)
> 1. Primeira sub-tarefa (risk: 6) (allocated to: Sicrano)
> 2. Segunda sub-tarefa (risk: 6) (allocated to: Beltrano)
> 2. Segunda tarefa (risk: 6) (allocated to: Sicrano+Beltrano) 
> (allocated by: Fulano)
> 1. Terceira sub-tarefa (risk: 6) (allocated to: Sicrano)
> 2. Quarta sub-tarefa (risk: 6) (allocated to: Beltrano)
> 
> eric@NOTEERIC:~$ cat teste.sh
> #!/bin/sh
> 
> PROJETO="1"
> 
> while read i; do
> #     echo $i
>       ITEM=$(echo $i | cut -d " " -f1)
>       LINHA=$(echo $i | cut -d " " -f2- | sed -e 
> 's/(risk:/\t/g' -e 's/(allocated [tb][oy]:/\t/g' -e 's/)//g')
>       STRTAREFA=$(echo $i | cut -d "(" -f 1 | cut -d " " -f2-)
>       if [ "${STRTAREFA}" = "Projeto " ]; then
>               PROJETO=${ITEM}
>               echo "${ITEM} ${LINHA}"
>       else 
>               if ! echo ${STRTAREFA} | grep -q sub-tarefa ; then 
>                       echo "${PROJETO}${ITEM} ${LINHA}"
>                       TAREFA=${ITEM}
>               else
>                       echo "${PROJETO}${TAREFA}${ITEM} ${LINHA}"
>               fi
>       fi
> #sleep 2
> done  < teste.txt
> 
> eric@NOTEERIC:~$ sh teste.sh
> 1. Projeto     6       Sicrano+Beltrano        Fulano
> 1.1. Primeira tarefa   6       Sicrano+Beltrano        Fulano
> 1.1.1. Primeira sub-tarefa     6       Sicrano
> 1.1.2. Segunda sub-tarefa      6       Beltrano
> 1.2. Segunda tarefa    6       Sicrano+Beltrano        Fulano
> 1.2.1. Terceira sub-tarefa     6       Sicrano
> 1.2.2. Quarta sub-tarefa       6       Beltrano
> eric@NOTEERIC:~$ 
> 
> 
> On Seg 19/04/10 22:09 , "Marcio Gil" address@hidden sent:
> > Pessoal, tenho o seguinte problema para resolver:
> > Estou tentando processar uma lista de tarefas gerada por uma
> > ferramenta (Todolist), e o formato é o seguinte:
> > 1. Projeto (risk: 6) (allocated to: Sicrano+Beltrano) (allocated
> > by: Fulano)
> > 1. Primeira tarefa (risk: 6) (allocated to: Sicrano+Beltrano)
> > (allocated by: Fulano)
> > 1. Primeira sub-tarefa (risk: 6) (allocated to: Sicrano)
> > 2. Segunda sub-tarefa (risk: 6) (allocated to: Beltrano)
> > 2. Segunda tarefa (risk: 6) (allocated to: Sicrano+Beltrano)
> > (allocated by: Fulano)
> > 1. Terceira sub-tarefa (risk: 6) (allocated to: Sicrano)
> > 2. Quarta sub-tarefa (risk: 6) (allocated to: Beltrano)
> > Repare que é uma árvore de tarefas. Preciso transformar isto
numa
> > tabela simples como essa:
> > 1. Projeto 6 Sicrano+Beltrano Fulano
> > 1.1. Primeira tarefa 6 Sicrano+Beltrano Fulano
> > 1.1.1. Primeira sub-tarefa 6 Sicrano
> > 1.1.2. Segunda sub-tarefa 6 Beltrano
> > 1.2. Segunda tarefa 6 Sicrano+Beltrano Fulano
> > 1.2.1. Terceira sub-tarefa 6 Sicrano
> > 1.2.2. Quarta sub-tarefa 6 Beltrano
> > Ou seja, extrair os campos da lista de tarefas e transformá-las
em
> > uma tabela com linhas e colunas separadas com tab.
> > A parte de extrair com campos e sapara-los com TAB eu sei fazer,
a
> > dúvida é o primeiro campo, que o Todolist não gera com o número
> > das
> > tarefas e sub-tarefas concatenado, porém indica o nível da
tarefa
> > por meio de endentação.
> > Alguém pode me dar uma luz de como fazer isso?
> >          
> > 
> 



reply via email to

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