Mailinglist Archive: opensuse-de (2024 mails)

< Previous Next >
Re: awk-Anfängerproblem
  • From: Andreas Winkelmann <ml@xxxxxxxxxxxxxx>
  • Date: Wed, 27 Dec 2006 14:59:55 +0100
  • Message-id: <200612271459.55395.ml@xxxxxxxxxxxxxx>
On Wednesday 27 December 2006 14:33, Lutz Kasper wrote:

> letztens fand ich in der Literatur folgendes Script:
>
> 1 #!/bin/sh
> 2 #fquota - Disk Analyse Tool for UNIX.
> 3
> 4 MAXDISKUSAGE=20
> 5
> 6 for name in $(cut -d: -f1,3 /etc/passwd | awk -F: '$2 > 999 { print $1
> }') 7 do
> 8 echo -n "User $name - Belegter Platz: "
> 9
> 10 find /home -user $name -type f -ls | \
> 11 awk '{ sum += $7 } END { print sum / (1024*1024) "MB" }'
> 12
> 13 done | awk "\$7 > $MAXDISKUSAGE {print \$0 }"
> 14
> 15 exit 0
>
> bis Zeile 11 ist mir alles verständlich, funktioniert auch.
> Ich erhalte aber keine Ausgabe.
> Ändere ich Zeile 13um in
> 13 done | awk "\$7 < $MAXDISKUSAGE {print \$0 }"
> erhalte ich
> User nobody - Belegter Platz: 0MB
> User xyz - Belegter Platz: 1231,97MB
> dann wird aber "MAXDISKUSAGE" nicht berücksichtigt.

> Irgendwie verstehe ich Zeile 13 nicht.
> Woher weiß awk "\$7 ..." dass die Summe der Felder in Spalte 7 gemeint ist
> {sum += $7}

Der awk in Zeile 11 gibt die Summe in folgender Zeile aus:

User xyz - Belegter Platz: 1231,97MB

Der awk in Zeile 13 soll daraus die Zahl mit $MAXDISKUSAGE vergleichen und die
Zeile nur ausgeben, wenn der Wert entsprechend grösser ist.

Das Problem hier scheint wohl zu sein, dass die 7 nicht stimmt.

1 = "User"
2 = "xyz"
3 = "-"
4 = "Belegter"
5 = "Platz:"
6 = "1231,97MB"
7 = ""

Änder Zeile 11, dass ein Leerzeichen vor MB steht, also " MB", dann ist:
...
6 = "1231,97"
7 = "MB"

Und mach aus der 7 in Zeile 13 eine 6.

--
Andreas
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx

< Previous Next >
Follow Ups
References