![]() |
|
|
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 |
| Filer og datoer | mastachef | UNIX for dummyer Spørgsmål & svar | 1 | 12-03-2007 02:12 PM |
| sammenligne datoer ... | i_priyank | Shell Programmering og Scripting | 3 | 09-21-2007 01:50 AM |
| sammenligne datoer | ragha81 | Shell Programmering og Scripting | 2 | 11-01-2006 06:17 PM |
| sammenligne datoer | ragha81 | Shell Programmering og Scripting | 17 | 10-25-2006 06:38 PM |
| Mens vi taler om datoer. En anden dato spørgsmål | MizzGail | UNIX for dummyer Spørgsmål & svar | 14 | 10-24-2003 08:54 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Awk spørgsmål: Sum datoer
Hej!
Jeg har en logfil, som har følgende opstilling: 20080812 0 20 20080812 12 10 20080812 12 10 20080812 12 10 Jeg ønsker at summen af "12" på de sidste 3 linjer og gemme "20" på den første linje. Det endelige resultat skal 20080812 36 20 Jeg mener, at det bør mig mere nemmere med awk? Mange tak i rådgivning. |
|
||||
|
Mig ikke sikker på, om jeg får spørgsmålet korrekt, men her er den kode: jeg bare ud fra, at du vil tage det første og det tredje felter fra første linje.
Code:
awk 'BEGIN {sum=0; } {if (NR==1){ var1=$1; var3=$3;} sum += $2; } END { print var1" "sum" "var3 }' filename
|
|
||||
|
Beklager tak for dit svar, men jeg ikke har bragt hele fil, så her er det:
200808260640 0 11383 200808210640 0 200808300640 0 200808300640 0 200808300640 0 200808260640 336528522 8844 200808260640 724271039 8080 200808260640 583502861 8077 200808210640 0 200808210640 0 200808210640 0 200808290640 0 200808290640 0 200808290640 0 200808290640 0 200808150640 0 7667 200808160640 0 3285 200808310640 0 200808150640 634799861 4703 200808150640 329658775 4704 200808150640 588901581 4875 200808160640 201718658 1424 Hvad jeg vil gøre, er summen alle $ 2 for samme dato og gemme $ 3 til denne dato. F.eks gerne en udstationeret i første post. 200808150640 0 7667 200808150640 634799861 4703 200808150640 329658775 4704 200808150640 588901581 4875 Forventet resultat: 200808150640 (634799861 +329658775 +588901581) 7667 Jeg ønsker at gøre dette for helt fil. Mange tak i rådgivning. |
|
|||||
|
Bare gætte:
(brug nawk eller / usr/xpg4/bin/awk på Solaris) Code:
awk 'END \
{ for (dt in third) print dt, second[dt], third[dt] }
{ if (!_[$1]++) third[$1] = $3; second[$1] += $2 }
' filename
![]() Code:
perl -ane'
$third{$F[0]} = $F[2] unless $x{$F[0]}++;
$second{$F[0]} += $F[1];
print map "$_ $second{$_} $third{$_}\n", sort keys %x
if eof' filename
Sidst redigeret af radoulov; 09-02-2008 på 07:22 AM.. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|