![]() |
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier. |
Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
|
||||
| Faden | Thread Starter | Forum | Antworten | Last Post |
| Dateien und Daten | mastachef | UNIX for Dummies Questions & Answers | 1 | 12-03-2007 02:12 PM |
| Vergleich Termine ... | i_priyank | Shell Programmierung und Scripting | 3 | 09-21-2007 12:50 AM |
| Daten vergleichen | ragha81 | Shell Programmierung und Scripting | 2 | 11-01-2006 06:17 PM |
| Vergleich der Daten | ragha81 | Shell Programmierung und Scripting | 17 | 10-25-2006 05:38 PM |
| Während wir auf dem Gebiet der Daten. Ein weiteres Datum Frage | MizzGail | UNIX for Dummies Questions & Answers | 14 | 10-24-2003 07:54 AM |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
Awk Frage: Summe Termine
Hi there,
Ich habe ein Logfile mit dem folgenden Satz: 20080812 0 20 20080812 12 10 20080812 12 10 20080812 12 10 Ich möchte die Summe "12" auf den letzten 3 Zeilen und speichern Sie die "20" in der ersten Zeile. Die letzte Ausgabe sollte 20080812 36 20 Ich denke, dass ist mir leichter mit awk? Vielen Dank im Gutachten. |
|
||||
|
Bin mir nicht sicher, ob ich die Frage richtig, aber hier ist der Code: Ich habe gerade davon ausgegangen, dass Sie wird unter dem ersten und dem dritten Bereich aus der ersten Zeile.
Code:
awk 'BEGIN {sum=0; } {if (NR==1){ var1=$1; var3=$3;} sum += $2; } END { print var1" "sum" "var3 }' filename
|
|
||||
|
Sorry Dank für Ihre Antworten, aber ich habe nicht die gesamte Datei, so hier ist es:
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 Was ich will, ist die Summe aller $ 2 für den gleichen Tag und speichern Sie die $ 3 für die zu diesem Zeitpunkt. Z. B. wie ein Beitrag in den ersten Beitrag. 200808150640 0 7667 200808150640 634799861 4703 200808150640 329658775 4704 200808150640 588901581 4875 Erwartetes Ergebnis: 200808150640 (634799861 +329658775 +588901581) 7667 Ich möchte, dies zu tun für die ganz-Datei. Vielen Dank im Gutachten. |
|
|||||
|
Nur raten:
(Verwendung nawk oder / usr/xpg4/bin/awk auf 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
Zuletzt bearbeitet von radoulov; am 09-02-2008 06:22 AM.. |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|