Júlio Vou experimentar o bash 4.0 e também a interessante a idéia de simular vetores multidimensionais. O meu objetivo é o de concentrar informações sobre os processos que estão sendo desenvolvidos pelo sistema e que estão distribuídos em diversos diretórios diferentes, em um único arquivo na forma de um banco de dados textual. A matriz é maior do que o exemplo que forneci são 33 linhas por 24 colunas e agora estou me preparando para testar o desempenho do formato antigo com o novo formato que estou desenvolvendo. Agradeço as dicas e a rápida resposta.
Abraços Angelo Andelnyr --- Em [email protected], "Julio C. Neves" <julio.ne...@...> escreveu > > Fala Andelnyr, > Não tive tempo de me meter na lógica do seu prg, mas deixa eu te dar algumas > dicas sobre vetores: > > Estou escrevendo um artigo sobre o Bash 4.0 do qual tirei um pedaço e > transcrevo a seguir: > Lendo um arquivo para um vetor > > Ainda falando do Bash 4.0, eis que ele surge com uma outra novidade: o > comando intrínseco (*builtin*) mapfile, cuja finalidade é jogar um arquivo > de texto inteiro para dentro de um vetor, sem *loop* ou substituição de > comando > > - > > EPA! Isso deve ser muito rápido! > - > > E é. Faça os teste e comprove! > > Exemplo: > > *$ cat frutas * > > abacate > > maçã > > morango > > pera > > tangerina > > uva > > *$ mapfile vet < frutas **Mandando frutas para vetor vet* > > *$ echo ${v...@]} **Listando todos elementos de vet* > > abacate maçã morango pera tangerina uva > > > Obteríamos resultado idêntico se fizéssemos: > > *$ vet=($(cat frutas))* > > > Porém isso seria mais lento porque a substituição de comando é executada em > um *subshell*. > > Uma outra forma de fazer isso que logo vem à cabeça é ler o arquivo com a > opção -a do comando read. Vamos ver como seria o comportamento disso: > > *$ read -a vet < frutas * > > $ echo ${v...@]} > > abacate > > > Como deu para perceber, foi lido somente o primeiro registro de frutas. > > Pois é, se vc está usando o Bash 4.0, poderia usar este intrínseco para > carregar o vetor. É bem mais rápido de programar e de executar. > > Outra dica é que vc pode emular um array de mais de uma dimensão. No seu > caso, cada linha tem 4 campos. Supondo que a linha está em $L e o campo está > em $C, vc poderia indexar da seguinte forma: > L=3;C=2 > Vet [$L$C]=110 > > Para recuperar, vc pode usar echo ${!v...@]}, que te devolverá todos e > somente os índices do vetor. Se o índice estiver em $Ind, > L=$[Ind/10] > C=$[Ind%10] > > Espero que esta teoria o ajude, pq se usá-la, creio que seu prg ficará menor > e mais rápido. > > Abraços, > Julio > Cursos de Shell e Zenity em 2 fins de semana? > - Em SP ligue (11)2125-4747; > - Em DF ligue (61) 3223-3000; > - Turmas fechadas em outras cidades ligue (21) 8112-9988.
