![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| 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 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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 |
|
||||
|
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
|
|
||||
|
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
By the way, $ 3 em 6515152 52272 * ConstMethodKlass é apenas "*" - talvez você deseja normalizar que, em vez de mudar o script. |
|
||||
|
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);
|
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|