gorthaur
Goto Top

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

Content-Key: 67954

Url: https://administrator.de/contentid/67954

Printed on: April 23, 2024 at 06:04 o'clock

Member: Natureshadow
Natureshadow Sep 06, 2007 at 11:08:12 (UTC)
Goto Top
Hallo,

Zahlen werden in der Bash mit dem Operator -lt (less than, weniger als) und -gt (greater than, größer als) verglichen.

Grüße,
Nik