Kommazahlen vergleichen in einer Shell
Hallo
Ich habe eine Frage bzgl. Shellprogrammierung
Ich erstelle mir mittels Robocopy eine Logdatei meines Backups: Diese filtere ich nach bestimmten Kriterien in meiner Shell.
Als Ergebnis erhalte ich eine Datei die folgenden Inhalt hat:
6.0 m T:\users\kurtr\fuer karl\hO\db\db_singleUser-2007-8-17.zip
3.0 m T:\users\markusg\Oracle\Authentication Services (Linux)\authservices_sample.zip
3.5 m W:\karls\profile\Oracle Jar Cache\frmall_jinit.jar-7844dae2-77051520.zip
3.4 m W:\karls\profile\Oracle Jar Cache\itext-paulo-155.jar-1890247f-49d06567.zip
7.8 m V:\rman\D817\c-1996553605-20070818-00.ctl
447.9 m V:\rman\D817\D817_337_20070818
458.6 m V:\rman\D817\D817_339_20070818
298.6 m V:\rman\D817\D817_340_20070818
752.4 m V:\rman\D817\D817_342_20070818
1.2 m V:\rman\D817\D817_343_20070818
4.4 m V:\rman\P817\c-2936502674-20070818-00.ctl
5.6 m V:\rman\P817\P817_200_20070818
528.6 m V:\rman\P817\P817_201_20070818
Ziel meines Shells soll es sein das alle Zeilen wo die Dateigröße > 500 MB ist auszugeben.
Mein Ansatz sieht folgendermaßen aus: (Auszug)
while read -r filesizeinmb dir
do
if [ "$filesizeinmb" -ge "$2" ]; then
fi
done < output_m.txt
Also ich lese Zeile für Zeile ein und speichere es in 2 Variablen. Danach würde ich gerne die Dategröße mit einem Eingabeparameter vergleichen. Wenn die Dateigröße größer ist soll die Dateigröße + Pfad/Datei ausgegeben werden.
Das Problem ist das die Dateigröße eine Kommazahl ist. Der Eingabeparameter soll auch ein Kommawert sein. Leider habe ich nichts gefunden um Kommawerte zu vergleichen.
Ich habe probiert den Kommawert abzuschneiden mit "$filesizeinmb | cut -d. -f1" leider ohne Erfolg.
Gibt es irgendeine Möglichkeit? Ich bin nach stundenlangem Google leider ratlos. Habe nichts angemessenes gefunden
mfg
Mario
Ich habe eine Frage bzgl. Shellprogrammierung
Ich erstelle mir mittels Robocopy eine Logdatei meines Backups: Diese filtere ich nach bestimmten Kriterien in meiner Shell.
Als Ergebnis erhalte ich eine Datei die folgenden Inhalt hat:
6.0 m T:\users\kurtr\fuer karl\hO\db\db_singleUser-2007-8-17.zip
3.0 m T:\users\markusg\Oracle\Authentication Services (Linux)\authservices_sample.zip
3.5 m W:\karls\profile\Oracle Jar Cache\frmall_jinit.jar-7844dae2-77051520.zip
3.4 m W:\karls\profile\Oracle Jar Cache\itext-paulo-155.jar-1890247f-49d06567.zip
7.8 m V:\rman\D817\c-1996553605-20070818-00.ctl
447.9 m V:\rman\D817\D817_337_20070818
458.6 m V:\rman\D817\D817_339_20070818
298.6 m V:\rman\D817\D817_340_20070818
752.4 m V:\rman\D817\D817_342_20070818
1.2 m V:\rman\D817\D817_343_20070818
4.4 m V:\rman\P817\c-2936502674-20070818-00.ctl
5.6 m V:\rman\P817\P817_200_20070818
528.6 m V:\rman\P817\P817_201_20070818
Ziel meines Shells soll es sein das alle Zeilen wo die Dateigröße > 500 MB ist auszugeben.
Mein Ansatz sieht folgendermaßen aus: (Auszug)
while read -r filesizeinmb dir
do
if [ "$filesizeinmb" -ge "$2" ]; then
done < output_m.txt
Also ich lese Zeile für Zeile ein und speichere es in 2 Variablen. Danach würde ich gerne die Dategröße mit einem Eingabeparameter vergleichen. Wenn die Dateigröße größer ist soll die Dateigröße + Pfad/Datei ausgegeben werden.
Das Problem ist das die Dateigröße eine Kommazahl ist. Der Eingabeparameter soll auch ein Kommawert sein. Leider habe ich nichts gefunden um Kommawerte zu vergleichen.
Ich habe probiert den Kommawert abzuschneiden mit "$filesizeinmb | cut -d. -f1" leider ohne Erfolg.
Gibt es irgendeine Möglichkeit? Ich bin nach stundenlangem Google leider ratlos. Habe nichts angemessenes gefunden
mfg
Mario
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 67954
Url: https://administrator.de/forum/kommazahlen-vergleichen-in-einer-shell-67954.html
Ausgedruckt am: 29.04.2025 um 03:04 Uhr
1 Kommentar