key=value verarbeiten & value addieren

knausser

knausser

Grünschnabel
Hallo,

ich wäre sehr dankbar, wenn mir jemand von Euch einen kleinen Denkanstoß geben könnte, wie ich ich folgende Aufgabe lösen könnte.:think:

Ich habe in einer Datei folgende beispielhaften Eintrag:
Code:
key=abraham,josef,simon,josef,elias,abraham,josef,abraham,abraham,josef,simon,simon,abraham,
ich möchte nun die values (alles rechts vom "=" Gleichheitszeichen) zusammenaddiert ausgeben. Also ungefähr so:
Code:
5 x abraham
3 x simon
4 x josef
1 x elias
Ist mit Sicherheit keine schwere Aufgabe.
Ich tippe mal auf awk zum addieren der einzelnen values - die müssten dann aber untereinander in einer Datei stehen, oder geht das anders?
Wie trenne ich aber den key von den values und wie dann die einzelnen values durch das "," (Komma) voneinander?
Da stell' ich mich noch etwas zu doof an und hab keine Idee ...

vorab vielen Dank für's "augen-öffnen"
 
hi knausser:
cut -f2 -d= | tr "," "\n" | sort | uniq -c

also gesamt:
echo key=abraham,josef,simon,josef,elias,abraham,josef,abraham,abraham,josef,simon,simon,abraham, | cut -f2 -d= | tr "," "\n" | sort | uniq -c
1
5 abraham
1 elias
4 josef
3 simon



LG,
Stephan
 
Unnötigerweise hier mal eine Lösung in perl:
Code:
echo "key=abraham,josef,simon,josef,elias,abraham,josef,abraham,abraham,josef,simon,simon,abraham"|\
perl -ne 'chomp; map{$foo{$_}++} split(/,/, (split(/=/))[1]); for(keys(%foo)){print "$foo{$_}\t$_\n"}'
4       josef
5       abraham
1       elias
3       simon
Aber mit den shell-tools ist es wesentlich transparenter und auch mehr Ontopic, *hüstl*..
 

Ähnliche Themen

Perl: Key im Hash via Referenz setzen

Zurück
Oben