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!
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!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
2 Kommentare
Neuester Kommentar
Hallo Lapvika,
da hat sich doch tatsächlich ein Fehler in meinen damaligen Code eingeschlichen
(eine Berechnung an der falschen Position so dass die letzte Zeile nicht mit in der Summe einbezogen wurde), sorry dafür:
Grüße Uwe
da hat sich doch tatsächlich ein Fehler in meinen damaligen Code eingeschlichen
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