comparar arquivos de texto

Iniciado por ricsdeol88, 12 de Janeiro de 2007, 08:02

tópico anterior - próximo tópico

ricsdeol88

Olá estou precisando comparar dois arquivos, tipo tenho um arquivo chamado enderecos q contem uma lista de endereços ips 192.168.0.1 á 192.168.0.256, e outro chamado bloqueados q contem os ips bloqueados para acessar a internet atraves de um squid por exemplo:
192.168.0.125 # stella
192.168.0.135 # segurança
e vários outros queria comparar esses arquivos para gerar uma relação de ips autorizados !! tipo eu ja tenho em um arquivo chamado autorizados q contem os alguns ips com acesso a internet. Tentei fazer com o uso do diff porem não tive o resultado q eu queria tem outra maneira, com outro comando ou com o própio diff. A estou usando um Red Hat nesse servidor proxy.
Obrigado até ++

pasousa

Não estou a perceber o problema, podia ser mais explicito?

O problema parece-me interessante. Pretendo ajudar a resolver  :)

ricsdeol88

Citação de: pasousa online 12 de Janeiro de 2007, 09:23
Não estou a perceber o problema, podia ser mais explicito?

O problema parece-me interessante. Pretendo ajudar a resolver  :)

o obrigado, é o seguinte tenho o arquivo chamado enderecos que é assim:

192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
   ... até o
192.168.0.250
192.168.0.251
192.168.0.253
192.168.0.254
192.168.0.255
193.168.0.256


e tenho um outro chamdo bloqueados

192.168.0.1   #NILTON CESAR
192.168.0.102 #JOAO
192.168.0.114 #CLOVIS
192.168.0.116 #RAQUEL
192.168.0.117 #DOUGLAS
192.168.0.118 #ADILSON
192.168.0.120 #LUIZ CARLOS
192.168.0.122 #CARLOS EDUARDO
192.168.0.123 #PEIXOTO
192.168.0.124 #ROSARIO
192.168.0.125 #FLAVIO
192.168.0.126 #JAQUELINE
192.168.0.128 #JOSE VALDIR
192.168.0.129 #GISLENE
192.168.0.130 #STELLA
192.168.0.135 #SEGURANCA
192.168.0.136 #MILVA
192.168.0.137 #NEIDE
192.168.0.138 #CLAUDIA
192.168.0.141 #TADEU
192.168.0.142 #ELIVELTO
192.168.0.143 #FABIANA
192.168.0.145 #AMBULATORIO

eu queria fazer um jeito de tirar da lista enderecos esses ips do bloqueados para gerar o arquivo  liberados. Tentei fazer com o diff mas esses comentários na frente q eu acho q esta dando problemas

Diepartus

Se os arquivos são de texto, eu faria o seguinte, importava para uma planilha eletrônica, com o IP em cada coluna, criando um cabeçalho para cada coluna, e usaria a fórmula CONT.SE.
Por exemplo:

Endereços     Contagem     Coluna em branco     Bloqueados     Nomes 
192.168.0.1                                                                   192.168.0.1     #Maria
192.168.0.2                                                                   192.168.0.3     #Tereza             
192.168.0.3                                                                   192.168.0.6     #Pedro
192.168.0.4                                                                   192.168.0.250 #Douglas
192.168.0.250                                                               192.168.0.252 #Thiago
192.168.0.251                                                               192.168.0.253 #Clotilde

No caso acima, vamos supor que a 1ª célula é o A1, a 2ª A2 e assim por diante, a fórmula que você usaria na coluna contagem seria a seguinte:
=cont.se($d$2:$d$7;A2)
Os valores das células comparadas tem que estar exatamente igual, se ouver um espaço à mais, mesmo que os valores são iguais, não vai dar certo.
Feito a fórmula, agora você arraste o cursor com a fórmula preenchedo as células acompanhando a coluna da lista de IPs até terminar a coluna. Todos os IPs que estiverem bloqueados apareceram com o número 1 na frente e os que estiverem livres apareceram com o número 0. Depois é só classificar e criar uma arquivo com os IPs liberados.
Para fazer importação no Open Office, é só dar um copiar e colar do arquivo de texto para a planilha, automaticamente a planilha abrirá um pequeno assistente de importação.
Se você tiver um pouco de conhecimentos em planilha eletrônica, não terá dificuldades.

:)

ricsdeol88

valeww pela dica, mas só tem o modo texto instalado

Akuhn

Corrigindo...

Existem n maneiras de se fazer isso, mas recomendo você usar shell script para fazer o mesmo.

Uma dessas maneiras é usar o diff como você mesmo mencionou.
Mas primeiro tem que tirar os ips do arquivo bloqueados.
Citarcat bloqueados |cut -d" " -f1 >bloqueados.txt

Isso vai gerar um arquivo limpo com os ip bloqueados chamado bloqueados.txt

Agora é só usar o diff para comprar eles.
Citardiff enderecos bloqueados.txt >liberados

Depois é preciso limpar o arquivo:

Citaregrep "^<|^$" liberados > liberados.txt

Citarcat liberados.txt |cut -d" " -f2 >liberado_ok

Com certeza deve ter alguma forma mais otimizada de fazer isso, mas não me veio nenhuma nesse momento.
Espere que ajude, qualquer dúvida comente, [ ]'s.

PS: Acho que essa pergunta deveria estar na parte de Shell Script ou servidores e não na parte de iniciantes.
Aldefax Gilvan Kuhn

Linux User 410689

ricsdeol88

opa obrigado,
Citação de: Akuhn online 12 de Janeiro de 2007, 11:38

Agora é só usar o diff para comprar eles.
Citardiff enderecos bloqueados.txt >liberados

Depois é preciso limpar o arquivo:

Citaregrep "^<|^$" liberados > liberados.txt

Citarcat liberados.txt |cut -d" " -f2 >liberado_ok

Com certeza deve ter alguma forma mais otimizada de fazer isso, mas não me veio nenhuma nesse momento.
Espere que ajude, qualquer dúvida comente, [ ]'s.

PS: Acho que essa pergunta deveria estar na parte de Shell Script ou servidores e não na parte de iniciantes.

intão eu ja tinha conseguido gerar até o liberado porem não estou conseguindo limpar ele.
mesmo assim brigadão pela ajuda