93578

Eine Liste mit Wörter, die nach Häufigkeit sortiert sind updaten ohne Liste jedes Mal neu erstellen

Hallo liebe Gemeinde,

Ich habe eine Wortliste, die so aussieht:

quartal4_2018.txt:
Opel-Astra:3577
VW-Golf:3466
VW-Touran:2432
Opel-Corsa:1566
Also Links steht das Auto und recht (immer durch den Doppelpunkt getrennt) - Verkaufshäufigkeit.

Nur kommt ein neues Quartal und ich bekomme eine neue Liste die so aussieht:

Opel-Astra
VW-Golf
Opel-Corsa
VW-Golf
VW-Golf
VW-Touran

Nun soll diese neue Liste zu der alten Liste hinzugefügt werden. Dabei sollen die Automarken nach Häufigkeit sortiert werden. Bis jetzt habe ich es wie folgt gemacht: eine alte Liste "quartalneu.txt" raus (noch ohne Häufigkeit-Sortierung), die sieht ähnlich wie die Liste Nr.2, aber mit deutlcih mehr Positionen natürlich.

Danach:

1) Eine neue Liste erstellen:
cat alteliste.txt neueliste.txt > quartalneu.txt

2) Jetzt nach Häufigkeit sortieren:
cat quartalneu.txt< | sort -T "$(pwd)/" | uniq -c | sort -nr -T "$(pwd)/" | sed 's/:[ \t]*//' > quartal1_2019.txt  

Danach sieht es so aus:

quartal1_2019.txt:
Opel-Astra:3578
VW-Golf:3469
VW-Touran:2433
Opel-Corsa:1567

Besteht die Möglichkeit die Liste quartal4_2018.txt: direkt updaten und nach Häufigkeit sortieren ohne jedesmal die ursprungliche Liste ohne Häufigkeitssortierung anzuwenden?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 493758

Url: https://administrator.de/forum/eine-liste-mit-woerter-die-nach-haeufigkeit-sortiert-sind-updaten-ohne-liste-jedes-mal-neu-erstellen-493758.html

Ausgedruckt am: 19.05.2025 um 12:05 Uhr

ukulele-7
Lösung ukulele-7 11.09.2019 um 17:04:54 Uhr
Goto Top
Ohne dir wirklich gut helfen zu können: Das sind eigentlich Aufgaben von Datenbanken (aggregieren, gruppieren, etc.). Willst/musst du wirklich mit Textdateien arbeiten?
93578
93578 11.09.2019 um 17:15:28 Uhr
Goto Top
Oh, Steine auf mein Kopf!!! Aber natürlich! Wie ich selbst auf die Idee nicht gekommen?! Vielen Dank!
140913
Lösung 140913 11.09.2019 aktualisiert um 18:36:56 Uhr
Goto Top
Würde natürlich auch zur Datenbank raten, hier trotzdem noch zur Frage des Threads falls es jemand waeum auch immer gebrauchen kann:
#!/bin/bash
oldfile="quartal4_2018.txt"  
newlist="quartalneu.txt"  
newfile="quartal1_2019.txt"  
new=$(cat "$newlist" | sort | uniq -c | sed -re 's/^\s*([0-9]+) (.*)/\2:\1/')  
tmp=$(mktemp)
awk -F":" -v n="$new" '{if (match(n,$1":([0-9]+)",arr)){print $1":"arr[1]+$2}}' "$oldfile" | sort -nrt ":" -k 2 >"$tmp"  
mv "$tmp" "$newfile"