Alle Werte in einer Datei addieren

730
Rhys Boyd

Ich habe ein riesiges 313.000-Protokoll, das wie folgt aussieht. Ich versuche einen schnellen Weg zu finden, um alle Online-Spieler zusammenzurechnen: (Anzahl) / 100. Addieren Sie also einfach alle (Anzahl) zusammen.

Beispiel für Daten:

[04-28-2018 22:49:30] TPS: 20.0 Memory free: 2394.0/4551.0 (52%) Players online: 19/100 Total chunks loaded: 8413 Total entities: 1532 

Java-Protokollierung

0

2 Antworten auf die Frage

1
Ian McGowan

Klingt nach einem Job für awk! Wenn das Format etwas stabil ist, sollte das folgende awk-Skript die Aufgabe erfüllen:

$ cat t1 [04-28-2018 22:49:30] TPS: 20.0 Memory free: 2394.0/4551.0 (52%) Players online: 20/100 Total chunks loaded: 8413 Total entities: 1532 [04-28-2018 22:49:30] TPS: 20.0 Memory free: 2394.0/4551.0 (52%) Players online: 20/100 Total chunks loaded: 8413 Total entities: 1532 [04-28-2018 22:49:30] TPS: 20.0 Memory free: 2394.0/4551.0 (52%) Players online: 20/100 Total chunks loaded: 8413 Total entities: 1532 [04-28-2018 22:49:30] TPS: 20.0 Memory free: 2394.0/4551.0 (52%) Players online: 20/100 Total chunks loaded: 8413 Total entities: 1532 [04-28-2018 22:49:30] TPS: 20.0 Memory free: 2394.0/4551.0 (52%) Players online: 20/100 Total chunks loaded: 8413 Total entities: 1532  $ awk ' END ' t1 100 

Grundsätzlich sind die Schritte:

1) Weisen Sie der Variablen po die Position 11 jeder Zeile zu. 2) Teilen Sie po im Zeichen /, und ordnen Sie die Teile dem Feld a zu. 3) Fügen Sie das erste Element von Feld a der Variablen für die laufende Summe hinzu. 4) END stimmt nach allen Daten überein gelesen wurde, drucken Sie die laufende Gesamtsumme

Wenn sich andere Daten in der Datei befinden, können Sie awk anweisen, nur Zeilen zu verarbeiten, die einem bestimmten Muster entsprechen, z.

$ awk '/TPS:/ END ' t1 

Awk ist standardmäßig auf Mac und Linux installiert und kann kostenlos unter Windows heruntergeladen werden. Siehe: https://stackoverflow.com/q/21927944/988525 oder eine schnelle Google-Suche. Cygwin oder das neue Windows Linux Subsystem sind etwas aufwendiger einzurichten, eröffnen jedoch eine Welt wunderbarer Tools, die für diese Art von Problemen verwendet werden können.

0
Ian McGowan

Wenn dies eine einmalige Frage ist und kein Skript erforderlich ist, können Sie die Datei auch in Ihr bevorzugtes Tabellenkalkulationsprogramm laden und mithilfe von Spalten in Textform die Daten aufteilen. Das Ziel ist es, die Spieler online in einer einzigen Spalte zu haben, die natürlich zusammengefasst werden kann. Mehr manuell, aber wenn die Daten unordentlich sind und es eine einmalige Sache ist, kann dies eine hilfreiche Methode sein, um sie für die Analyse aufzuräumen.