Como ordenar uma lista baseada em outra e depois comparar com uma terceira? [RESOLVIDO]

1. Como ordenar uma lista baseada em outra e depois comparar com uma terceira? [RESOLVIDO]

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 24/02/2015 - 17:16h

Oi Galera to com um problemão aqui.

Tenho um arquivo texto com todos os funcionários de uma empresa ( matrícula - nome ) ordenados por uma numeração hierárquica desde o presidente, ao tio da faxinaria, mais ou menos assim:

N --- MATRICULA ------ CARGO ---- NOME
01 22556633 PRESIDENTE JOAO BARROS
02 25569877 VICE-PRESID LUIZ FERNANDO
03 99856632 DIRETOR JOAQUIM COSTA
04 10523655 GERENTE LUIZ CARLOS FONTES
05 240125598 SUPERVISOR DAVID SILVA
06 56332456 COLABORADOR LUIZA LIMA
07 88568745 COLABORADOR TÁSSIA CRISTINA
.
.
.
.
230 64587410 AUX. SV. GERAIS RENATO JUNIOR

------------------------------------------------------------

Dessa Lista eu tenho funcionários que tem acesso a internet, mas no relatório é mostrado conforme se cadastra, não dá pra ordenar, preciso ordenar essa lista ( também num arquivo txt ), pelo campo (N) do funcionário tipo pegar a matrícula da lista geral e "pesquisar" se ela existe no campo matrícula da segunda lista , se existir eu queria que "atribuisse" esse número N conforme está na matrícula da primeira lista, para que no final gere um arquivo da segunda lista precedido do campo N pego da primeira, assim eu poderia "ordenar" a segunda lista.

Uma vez ordenada a segunda lista, em 6 meses pessoas são mandadas em boda e outras novas são contratadas então é concedida é cancelado acessos a internet, precisava comparar a segunda lista antiga ( já ordenada ), refazer atoda essa faxina para ordenar a nova lista atualizada do sistema ( pois já teriam se passado 6 meses e que vem desordenada), assim eu iria refazer o processo para ordenar a lista atualizada novamente com as duas listas em mãos, eu precisava "comparar", as duas pra saber as diferenças, de quem entrou e quem saiu em 6 meses para saber quais perderam o acesso a internet e quais novos ganharam.

Dá pra fazer isso por shell script? uso uma máquina linux, mas não tenho a minima noção de como fazer e peguei essa furada e não queria ficar "na mão" fazendo isso, por isso tive a idéia de ver se era possível com script.

desde já agradeço.


  


2. Re: Como ordenar uma lista baseada em outra e depois comparar com uma terceira?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/02/2015 - 09:24h

Quase sempre que respondo a você, a resposta sai parecida: dá para fazer com shell, sim, mas não é uma boa opção.

Sinceramente, já que, como você mesmo diz, você não sabe muito sobre o shell, aproveite para aprender uma linguagem de programação mais adequada às tarefas que você tem em mãos. Isso que você quer fazer é mole de ser feito com Perl, e imagino que também com Python (não sei Python, mas sei um bocado de Perl).

Perl é uma linguagem feita especificamente para processar textos e produzir relatórios. Ela agrega numa só ferramente recursos do shell, do grep, do sed, do awk, do sort, do tr, do cut e outras.

Como fazer o que você quer (com qualquer linguagem, inclusive shell)? Use arrays associativos para ligar o código à pessoa e vice-versa. Processe o que você quiser, em função da pessoa, e, na hora de imprimir o relatório, ordene o array de correspondência indexado pelo código, e imprima as informações da pessoa correspondente.

Se você optar pelo shell, saiba que terá de chamar muitos comandos externos, e talvez precise também de arquivos temporários para armazenar dados intermediários. Com Perl, Python ou mesmo uma linguagem mais tradicional, como C, C++ ou Java, provavelmente esses acessórios seriam desnecessários, e você poderia fazer tudo em memória.


3. Agradeço a resposta.

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 26/02/2015 - 12:00h

Infelizmente além do fato de não estar familiarizado com outras linguagens e ser iniciante no shell, a verdade é que na máquina linux ao qual trabalho não tem conexão externa ( tipo pra add repositório e baixar pacotes ), sua rede é interna e atualizações vem de um software específico que cuida da parte de segurança, portanto não tenho acesso externo, além do fato de que a máquina tem desativado compiladores de C/C++, perl, Phyton como medida de proteção para não compilar pacotes externos. por isso sou limitado ao shell script.



4. Já resolvi.

Luiz Carlos
luizcarlos18rj

(usa Suse)

Enviado em 26/02/2015 - 12:06h

Tento sempre resolver esses problemas em Linux como uma forma de aprender mais sobre o sistema, como tinha prazo pra entregar essas listas tive que fazer "na mão" mesmo utilizando a swuitch de escritório Libreoffice, joguei pra planilha atribui valores associados a hierarquia ( tipo presidente =1, diretor=2 gerente=3) usando as funções de planilha e consegui assim ordenar a lista que precisava , comparei as duas na mão e resolvi







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts