![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Om te bellen / een shell script van een shell script | konark | UNIX voor Dummies Questions & Answers | 1 | 10-26-2007 06:16 PM |
| hoe uit te voeren opdrachten in awk shell script? | RishiPahuja | Programmeren en Shell Scripting | 1 | 09-02-2005 10:37 |
| Execute shell script | sam71 | UNIX voor Dummies Questions & Answers | 1 | 04-29-2005 02:43 PM |
| Is het mogelijk uit te voeren shell script met PHP? | Micz | Programmeren en Shell Scripting | 1 | 05-27-2004 12:52 |
| Hoe te voeren shell script? | Siva | Programmeren en Shell Scripting | 3 | 05-14-2002 12:07 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Shell script is het nemen van meer dan 3 uur uit te voeren
Hoi
Ik ben bezig met een proces van het omzetten van alle waarden van de belangrijkste kolom in een rij, voor bijv. Key col1 col2 1 1 1 1 2 1 1 1 3 1 3 1 2 1 1 2 1 2 Wat ik doe in het script is zetten deze gegevens in 1 (sleutel) | 1:2:1:3 (Alle Kol1 waarden), 1:1:3:1 (alle col2 waarden), 2 (key) | 1:1,1:2 Om dit te bereiken gebruik ik twee terwijl loops en 4 Indien anders loops Nu in mijn productie van het aantal kolommen zijn 4 en het aantal records in de input-file zijn 0,2 miljoen (2 LAC) en dit script is met meer dan 3 uur te lopen. Enig idee over hoe de uitvoeringstermijn te minimaliseren? |
|
||||
|
Geen fout controle! Niet compleet! Met behulp van hash, dient dit te worden super-fast! ![]() Code:
#! /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
Hoi, Dit moet worden ok. ingang: Code:
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: Code:
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 Code: Code:
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
|
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|