![]() |
|
|
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 |
| 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 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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? |
|
||||
|
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
|
|
||||
|
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 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:
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
|
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|