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



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Reply
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 11-05-2009
Registrierte Nutzer
 

Registriert seit: November 2009
Beiträge: 2
Awk: Summieren von Werten mit der Gruppe Kriterien

Hi Guys,

Ich habe eine Text-Datei mit ";" wie Separator

F1, F2, F3, F4, F5
444, 100041, IT, GLOB; 1800000000
444, 100041; TM; GLOB; 1000000000
444;10300264; IT; GLOB;2000000000
444;10300264; IT;GLOB;2500000000

Ich habe die cullums F5 für gleiche F2 und F3 Summe collums
Das Ergebnis muss:

444, 100041, IT, GLOB; 1800000000
444, 100041; TM; GLOB; 1000000000
444;10300264;IT; GLOB;4500000000

Vielen Dank für Ihre Unterstützung.
Grüße
Gianluca
Sponsored Links
  #2 (permalink)  
Old 11-05-2009
ahmad.diab's Avatar
Registrierte Nutzer
 

Registriert seit: Mai 2008
Ort: Amman in Jordanien MEA
Beiträge: 484
Code: --


Code:
nawk -F";"  -v OFS=";" '
NF{a[$2";"$3]+=$5 ; b[$2";"$3]=$1";"$4}
END{ for (i in a) {print i,b[i],a[i] } }
'  input_file | sort | nawk -F";" -v OFS=";" '{print $3,$1,$2,$4,$5}'

BR

---------- Post an 11.45 Uhr aktualisiert ---------- vorherige Schätzung wurde auf 11.33 Uhr ----------

oder besser ein und eleganter: --

Code:
nawk  -F";"  -v OFS=";" '
NF{a[$2";"$3]+=$5 ; b[$2";"$3]=$1";"$2";"$3";"$4}
END{ for (i in a) {print b[i],a[i] } }
'  input_file | sort > out_file

BR
  #3 (permalink)  
Old 11-05-2009
danmero danmero is offline Forum Advisor  
 

Join Date: Nov 2007
Ort: H3X
Beiträge: 1566

Code:
awk 'BEGIN{FS=OFS=";"}NR>1{a[$2FS$3]+=$NF;$NF="";b[$2";"$3]=$0}END{for(i in a)print b[i]a[i]}' file

  #4 (permalink)  
Old 11-05-2009
Registrierte Nutzer
 

Join Date: Nov 2008
Ort: Amsterdam
Beiträge: 1.320

Code:
awk -F';' '{A[$2$3]=$1FS$2FS$3FS$4;B[$2$3]+=$5} END{for (i in A) printf "%s%.0f\n",A[i]FS,B[i]}' infile |sort -nt';'


Code:
444;100041;IT;GLOB;1800000000
444;100041;TM;GLOB;1000000000
444;10300264;IT;GLOB;4500000000

-oder -

Code:
awk -F';' '{B[$2$3]+=$5;$5="";A[$2$3]=$0} END{for (i in A) printf "%s%.0f\n",A[i],B[i]}' infile |sort -n|tr ' ' ';'


Zuletzt bearbeitet von Scrutinizer; am 11-05-2009 02:06 PM..
  #5 (permalink)  
Old 11-06-2009
Registrierte Nutzer
 

Registriert seit: November 2009
Beiträge: 2
Arbeit, aber ...

Hi guys,

Vielen Dank für Ihre Antwort und Lösung.
Ich habe ein kleines Problem. Wenn die Quelle Spur wechseln, wie es

444, 100041, IT, GLOB; 1800000000 ;;;;; I
444, 100041; TM; GLOB; 1000000000 ;;;;; I
444; 10300264; IT; GLOB; 4500000000 ;;;;; I

die awk Drop die Zeichen nach der Zahl ";;;;; I "

Was muss ich ändern?
Thanks and regards
Gianluca
  #6 (permalink)  
Old 11-06-2009
Registrierte Nutzer
 

Join Date: Nov 2008
Ort: Amsterdam
Beiträge: 1.320
Versuchen Sie folgendes:

Code:
awk 'BEGIN{OFS=FS=";"}{B[$2$3]+=$5;$5="@";A[$2$3]=$0} END{ for (i in A) {sub(/@/,sprintf("%.0f",B[i]),A[i]); print A[i]}}' infile | sort -nt';'

-oder -

Code:
awk -F';' '{B[$2$3]+=$5;$5="@";A[$2$3]=$0} END{ for (i in A) {sub(/@/,sprintf("%.0f",B[i]),A[i]); print A[i]}}' infile |sort -n|tr ' ' ';'

  #7 (permalink)  
Old 11-06-2009
radoulov's Avatar
--
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Posts: 3220
Award Winner

Verwenden gawk, nawk oder /usr/xpg4/bin/awk auf Solaris.

Code:
awk -F\; 'END { for (_ in _0) {
  l = split(_0[_], t); t[5] = _5[_]
  for (i=1; i<=l; i++) 
    printf "%s", t[i] (i == l ? RS : FS)  
    }      
  }  
{ _5[$2,$3] += $5; _0[$2,$3] = $0 }   
' infile



---------- Post at 01:03 PM Updated ---------- vorherige Schätzung wurde auf 12.54 Uhr ----------

Wenn die Datei bereits bestellt:

Code:
awk -F\; 'END { print r }
!_[$2,$3]++ && NR > 1 { 
  print r; x = 0 
  }
{ $5 = x += $5; r = $0 }
' OFS=\; infile

Sponsored Links
Reply

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 Aus


Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Zusammenfassung iostat Werte in AIX achak01 Shell Programmierung und Scripting 1 10-30-2009 11:20 AM
Zusammenfassung der Werte einer Spalte mohsin.quazi Shell Programmierung und Scripting 3 08-24-2009 11:45 PM
Kombinieren Sie mehrere String in 1 string Gruppe nach bestimmten Kriterien whchee Shell Programmierung und Scripting 4 05-11-2009 04:28 AM
Zusammenfassend Beträge mohan705 Shell Programmierung und Scripting 4 12-24-2008 07:13 AM
Zusammenfassung der Spalte sbasetty Shell Programmierung und Scripting 2 02-07-2007 08:15 PM



Alle Zeiten sind GMT -4. Es ist jetzt 09:52 PM.


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 Inhalt-Copyright © 1993-2010. Alle Rechte Reserved.Ad Management by RedTyger

Content Relevant URLs durch vBSEO 3.2.0