lapvika

Bestimmte Zeilen einer Datei addieren und ausgeben - Linux

Hallo zusammen,


ich habe eine Datei die wie folgt aussieht:

2147483648 - System1_lun01
2147483648 - System1_lun02
2147483648 - System1_lun03
2147483648 - System1_lun04
2147483648 - System1_lun05
2147483648 - System1_lun06
2147483648 - System1_lun07
2147483648 - System1_lun08
2147483648 - System1_lun09
2147483648 - System1_lun10
2147483648 - System1_lun11
2147483648 - System1_lun12
2147483648 - System1_lun13
2147483648 - System1_lun14
2306867200 - System1_lun15
2147483648 - System1_lun16
2306867200 - System1_lun17
2147483648 - System1_lun18
2306867200 - System1_lun19
2306867200 - System1_lun20


Die Zahlen sind die Größenangaben in KB.

ich möchte nun pro System die Gesamtgröße in TB ausgeben lassen und in eine neue Datei schreiben lassen.

Dazu nutze ich folgenden Befehl:

cat "/var/tmp/test.txt" | awk -F ' - |_lun|_meta|_daten' 'BEGIN{sys = ""; size = 0 }{if(sys == ""){sys = $2}; tot = size / 1073741824; if(sys == $2){size += $1}else{printf("%s - %.2fTB\n",sys,tot);size = $1;sys = $2}}END{printf("%s - %.2fTB\n",sys,tot)}' > /var/tmp/test.csv

In der Datei /var/tmp/test.csv werden dann die Zeilen addiert und als eine Zeile ausgegeben:

cat /var/tmp/test.csv
system1 - 38.59TB

Nun zu meinem Problem. Hier fehlen 2 TB in der Liste. Es müssten eigentlich 40.59 angezeigt werden, jedoch werden in meiner .csv-Datei nur 38.59TB angezeigt.

Weiß jemand, warum mir 2TB weniger angezeigt werden, als tatsächlich vorhanden? Ich finde einfach nicht den Fehler.

Vielen Dank!
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 272930

Url: https://administrator.de/forum/bestimmte-zeilen-einer-datei-addieren-und-ausgeben-linux-272930.html

Ausgedruckt am: 24.04.2025 um 19:04 Uhr

colinardo
Lösung colinardo 26.05.2015 aktualisiert um 11:38:21 Uhr
Goto Top
Hallo Lapvika,
da hat sich doch tatsächlich ein Fehler in meinen damaligen Code eingeschlichen face-wink (eine Berechnung an der falschen Position so dass die letzte Zeile nicht mit in der Summe einbezogen wurde), sorry dafür:
cat "/var/tmp/test.txt" | awk -F ' - |_lun|_meta|_daten' 'BEGIN{sys = ""; size = 0 }{if(sys == ""){sys = $2};if(sys == $2){size += $1}else{printf("%s - %.2fTB\n",sys,tot);size = $1;sys = $2}; tot = size / 1073741824}END{printf("%s - %.2fTB\n",sys,tot)}' >/var/tmp/test.csv  
Grüße Uwe
lapvika
lapvika 26.05.2015 um 11:38:43 Uhr
Goto Top
Super, vielen Dank!