The UNIX and Linux Forums  
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.

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 09-01-2008
BufferExploder BufferExploder is offline
Registrierte Nutzer
  
 

Join Date: Sep 2008
Beiträge: 9
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.
  #2 (permalink)  
Old 09-01-2008
dennis.jacob dennis.jacob is offline Forum Advisor  
DJ -------
  
 

Join Date: Feb 2007
Ort: Singapur / Bangalore / Cochin
Beiträge: 589
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
  #3 (permalink)  
Old 09-02-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell-Programmierer, Autor
  
 

Join Date: März 2007
Ort: Toronto, Kanada
Beiträge: 2361

Code:
awk '
 NR==1 { var1=$1; var3=$3; next }
 { var2 += $2 }
END { print var1" "var2" "var3 }' filename
Ich vermute, dass das, was Sie wirklich wollen, ist komplexer als das, Wenn ja, haben Sie wahrscheinlich zu beschreiben Sie Ihre Eingabedatei mehr vollständig.
  #4 (permalink)  
Old 09-02-2008
BufferExploder BufferExploder is offline
Registrierte Nutzer
  
 

Join Date: Sep 2008
Beiträge: 9
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.
  #5 (permalink)  
Old 09-02-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Beiträge: 2859
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
Wenn Sie die Ausgabe sortiert, lasse sie zu sortieren (oder verwenden Sie asorti, wenn Sie GNU Awk). Oder benutzen Sie einfach Perl

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..
  #6 (permalink)  
Old 09-02-2008
BufferExploder BufferExploder is offline
Registrierte Nutzer
  
 

Join Date: Sep 2008
Beiträge: 9
Vielen Dank mein Freund arbeitet wie ein Charme.
  #7 (permalink)  
Old 09-02-2008
dennis.jacob dennis.jacob is offline Forum Advisor  
DJ -------
  
 

Join Date: Feb 2007
Ort: Singapur / Bangalore / Cochin
Beiträge: 589
Versuchen Sie folgendes:

Code:
for each in $(cut -c1-8 filename | sort -u)
        do
        awk '/^'$each'/{ if ($2==0){ var1=$1;var3=$3;} sum+=$2; }END { print var1" "sum" "var3;}' filename
        done
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 09:14 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0