![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| At ringe / fuldbyrde en shell script fra en shell script | konark | UNIX for dummyer Spørgsmål & svar | 1 | 10-26-2007 05:16 PM |
| hvordan man kan udføre shell kommandoer i awk script? | RishiPahuja | Shell Programmering og Scripting | 1 | 09-02-2005 09:37 AM |
| Execute Shell Script | sam71 | UNIX for dummyer Spørgsmål & svar | 1 | 04-29-2005 01:43 PM |
| Er det muligt at udføre shell script med PHP? | Micz | Shell Programmering og Scripting | 1 | 05-27-2004 11:52 AM |
| Sådan udføre shell Script? | siva | Shell Programmering og Scripting | 3 | 05-14-2002 11:07 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Shell script er ved at tage mere end 3 timer at udføre
Hej
Jeg gør en proces med at konvertere alle de værdier vigtige søjle i en række, til fx Key col1 col2 1 1 1 1 2 1 1 1 3 1 3 1 2 1 1 2 1 2 Hvad jeg gør i Script er konvertere disse data til 1 (key) | 1:2:1:3 (Alle col1 værdier), 1:1:3:1 (alle col2 værdier) 2 (key) | 1:1,1:2 For at opnå dette er jeg bruge to while-løkker og 4 Hvis ellers sløjfer Nu i min produktion antallet af kolonner er 4 og det antal records i input-filen er på 0,2 mio (2 LAC), og dette script tager mere end 3 timer at køre. Nogen idé om hvordan man kan minimere den tid? |
|
||||
|
Ingen fejlkontrol! Ikke komplet!
Brug af hash, skal denne være super-hurtigt! ![]() 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
Hej,
Dette bør man være ok. input: 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 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:
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
|
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|