The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Encontre arquivos duplicados a partir de multuple diff com 2 tipos de arquivos ricky007 Programação Shell Script e 2 03-04-2008 01:46
Comparar / Diferenças entre os diretórios e subdiretórios? andylee80 UNIX para Dummies Perguntas & Respostas 5 07-12-2007 10:45
script para comparar arquivos pulse2india Programação Shell Script e 0 10-19-2005 05:32
pacote perl diretórios - e se o script é um diff para a DIR conter *. h? gusla Programação Shell Script e 1 11-23-2004 08:32
diff 2 ficheiros; diff da saída para arquivo 3. blt123 Programação Shell Script e 2 05-28-2002 12:29

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-29-2008
vasuki vasuki is offline
Usuário
  
 

Join Date: Jul 2008
Posts: 1
comparar 2 coloum de 2 diff arquivos usando Perl

Oi,

Eu sou novo para perl scripting .. Ainda estou aprendizagem isto .. Sou convidado a escrever um perl script que deve comparar 2 coloums de 2 arquivos diferentes. se esses 2 coloumn são mesmo o script deve armazenar o tanto as linhas de 2 diff arquivos.

estes são arquivos,

arquivo 1:
21767016 226112 char []
19136520 797355 java.lang.String
17769368 307049 java.lang.Object []
13981656 582569 java.util.HashMap $ Entrada
10867240 16650 int []
9065616 559799 java.lang.String []
9060192 79626 java.util.HashMap $ entrada []
6969384 23146 byte []
6857664 285736 java.util.Vector


arquivo 2:
21702192 904258 java.lang.String
20985320 360561 java.lang.Object []
20524112 209810 char []
12623280 525970 java.util.HashMap $ Entrada
10945080 678896 java.lang.String []
9781432 10871 int []
8302464 345936 java.util.Vector
8107104 337796 netscape.ldap.util.RDN
7620024 68357 java.util.HashMap $ entrada []
6515152 52272 * ConstMethodKlass

Então eu tenho que comparar 3. coloumn destes para 2 arquivos, por exemplo, tenho java.lang.string presentes em ambos Então eu quero o script armazenar estes linha completa de ambos os arquivos em 2 diff arquivos. Estes 2 arquivos são grandes arquivos.

queira sugerir-me como é que isto pode ser feito. alguns tinham sugerido um pode utilizar a tabela hash execução.

obrigado,
Vasuki
  #2 (permalink)  
Old 07-30-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Join Date: May 2008
Localização: Sydney, Austrália
Posts: 1.009
Experimente esta talvez (não testado):

Código:
awk '
    # load the contents of file1 into a hash indexed by $3
    NR==FNR { file1[$3]=$0; next }
    # check whether $3 in file2 is in the hash, if so, print bothlines to files
    $3 in file1 { print file1[$3] >> "file1.both"; print >> "file2.both" }
' file1 file2
  #3 (permalink)  
Old 07-30-2008
era era is offline Forum Advisor  
Herder do Inútil Gatos (On Sabático)
  
 

Join Date: Mar 2008
Localização: / lá / é / só / bin / sh
Posts: 3.652
E aqui é (quase) a mesma em Perl:

Código:
perl -ane 'BEGIN { open FILE1, ">file1.both"; open FILE2, ">file2.both"; }
  if ($. == ++$n) { $h{$F[2]} = $_; close ARGV if eof; next; }
  if ($h{$F[2]}) { print FILE1 $h{$F[2]}; print FILE2; }' file1 file2
Isto não é muito idiomático Perl, Mas esperemos que deverá ser suficiente para você começar. A barganha com $ n e ARGV é o de simular o awk NR \u003d\u003d FNR idiom. O eof coisa a fazer é repor os números de linha em $. quando o arquivo mudanças, ver o eof documentação para uma breve discussão.

By the way, $ 3 em 6515152 52272 * ConstMethodKlass é apenas "*" - talvez você deseja normalizar que, em vez de mudar o script.
  #4 (permalink)  
Old 07-30-2008
summer_cherry summer_cherry is offline Forum Advisor  
Usuário
  
 

Join Date: Jun 2007
Localização: Beijing China
Mensagens: 1.088
não tenho certeza se compreendi a sua pergunta corretamente.

Enfim, espero que possa fazer a seguir um certo sentido.

Código:
open (FH,"<a");
while(<FH>){
	@arr=split(" ",$_);
	$hash{$arr[2]}=$_;
}
close(FH);
open (FH,"<b");
while(<FH>){
	@arr=split(" ",$_);
	if(exists($hash{$arr[2]})){
		print $hash{$arr[2]};
		print $_;
	}
}
close(FH);
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 02:33.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0