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
Para ligar / executar um script a partir de um shell script Konark UNIX para Dummies Perguntas & Respostas 1 10-26-2007 06:16
a forma de executar comandos no shell script awk? RishiPahuja Programação Shell Script e 1 09-02-2005 10:37
Executar Shell Script sam71 UNIX para Dummies Perguntas & Respostas 1 04-29-2005 02:43
É possível executar shell script com PHP? Micz Programação Shell Script e 1 05-27-2004 12:52
Como executar shell script? SIVA Programação Shell Script e 3 05-14-2002 12:07

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 11-16-2007
nvuradi nvuradi is offline
Usuário
  
 

Join Date: Mar 2007
Lugares: 23
Shell script está levando mais de 3 horas para executar

Oi



Estou fazendo um processo de conversão de todos os valores da coluna principal em uma fila, para, por exemplo,



Chave col1 col2

1 1 1

1 2 1

1 1 3

1 3 1

2 1 1

2 1 2



O que estou fazendo no script é converter estes dados em



1 (Tecla) | 1:2:1:3 (Todos os valores Col1), 1:1:3:1 (todos os valores col2)

2 (Tecla) | 1:1,1:2

Para conseguir isto, estou usando duas alças e 4 º Se, enquanto outra loops

Agora, na minha produção, o número de colunas é o número 4 e registros no arquivo de entrada são 0,2 milhões (2 lac) e este script está levando mais de 3 horas para ser executado.

Alguma ideia sobre a forma de minimizar o tempo de execução?
  #2 (permalink)  
Old 11-16-2007
matrixmadhan matrixmadhan is offline Forum Advisor  
Technorati Master
  
 

Join Date: Mar 2005
Localização: nó folha na árvore B +
Mensagens: 2.957
Nenhum erro controlo! Não completa!

Utilizando hash, isso deve ser super-rápido!

Código:
#! /opt/third-party/bin/perl

open(FILE, "<", "r");

while(<FILE>) {
  next if(/^$/);
  chomp;
  my @arr = split(/ /);
  my @val = split(/,/, $fileHash{$arr[0]});
  $val[0] .= (":" . $arr[1]);
  $val[1] .= (":" . $arr[2]);
  $val[0] .= ("," . $val[1]);
  $val[0] =~ s/,:/,/;
  $val[0] =~ s/^://;
  $fileHash{$arr[0]} = $val[0];
}

close(FILE);

foreach my $k ( keys %fileHash ) {
  print "$k $fileHash{$k}\n";
}

exit 0
  #3 (permalink)  
Old 11-18-2007
summer_cherry summer_cherry is offline Forum Advisor  
Usuário
  
 

Join Date: Jun 2007
Localização: Beijing China
Mensagens: 1.088
awk

Oi,

Este deve ser um ok.

entrada:
Código:
1 1 1

1 2 1

1 1 3

1 3 1

2 1 1

2 1 2

3 1 1

4 2 1

4 1 3

1 3 1

2 1 1

2 1 2
optput:
Código:
2|1:1:1:1|1:1:1:1
3|1|1
4|2:1|2:1
1|1:2:1:3:3|1:2:1:3:3
código:
Código:
awk '
{
if (NF>1)
{
	col[$1]=$1
	if (col1[$1]=="")
		col1[$1]=$2
	else
		col1[$1]=sprintf("%s:%s",col1[$1],$2)
	if (col2[$1]=="")
		col2[$1]=$2
	else
		col2[$1]=sprintf("%s:%s",col2[$1],$2)
}
}
END{

for (i in col)
	print i"|"col1[i]"|"col2[i]
}' filename
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 10:08.


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