Nur letzten Wert einer Spalte ausgeben -awk

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Maik aus MS
Beiträge: 603
Registriert: 19.08.2005 17:01:19
Wohnort: Greven
Kontaktdaten:

Nur letzten Wert einer Spalte ausgeben -awk

Beitrag von Maik aus MS » 10.08.2009 18:07:49

Folgender Befehl:

Code: Alles auswählen

echo $(df -h /dev/sda2 | awk '{ print $5 }')
liefert folgendes:

Code: Alles auswählen

Ben% 36%
Beides steht in einer Spalte. Ich brauche aber nur die 36. Das Prozentzeichen kriege ich so weg:

Code: Alles auswählen

part_root=${sda1%?}
Kann ich awk anweisen nur die letzte Zeile auszugeben? Oder wie kriege ich Ben% weg?
Ich hatte auch schon die Ausgabe Use%. Hat wer ein Idee

Maik
Die mich kennen mögen mich.
Die mich nicht mögen können mich.

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: Nur letzten Wert einer Spalte ausgeben -awk

Beitrag von michaels » 10.08.2009 18:16:37

Vielleicht so:

Code: Alles auswählen

df -h /dev/sda2 | awk  '/[0123456789]/ { print $5 }'

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Nur letzten Wert einer Spalte ausgeben -awk

Beitrag von Meillo » 10.08.2009 21:34:54

Schlage folgendes vor:

Code: Alles auswählen

df -h  | awk '/\/dev\/sda2/ { sub(/%/,""); print $5 }'
Use ed once in a while!

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: Nur letzten Wert einer Spalte ausgeben -awk

Beitrag von michaels » 11.08.2009 07:42:51

Nicht schlecht :wink:

Benutzeravatar
Maik aus MS
Beiträge: 603
Registriert: 19.08.2005 17:01:19
Wohnort: Greven
Kontaktdaten:

Re: Nur letzten Wert einer Spalte ausgeben -awk

Beitrag von Maik aus MS » 11.08.2009 11:47:55

:lol: Danke haut hin. Beim ersten Vorschlag wird das Prozentzeichen mit ausgegeben, obwohl wenn ich den Befehl
richtig verstehe er ja nur Zahlen ausgeben soll. Den zweiten Befehl muss ich mir erst mal auf der Zunge zergehen lassen,
haut aber hin.

Maik
Die mich kennen mögen mich.
Die mich nicht mögen können mich.

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Nur letzten Wert einer Spalte ausgeben -awk

Beitrag von Meillo » 11.08.2009 12:50:13

Maik aus MS hat geschrieben::lol: Danke haut hin. Beim ersten Vorschlag wird das Prozentzeichen mit ausgegeben, obwohl wenn ich den Befehl
richtig verstehe er ja nur Zahlen ausgeben soll.
Du verstehst ihn falsch. Die RegExp (das in Slashes) vor dem Block (das in geschweiften Klammern) bedeutet, dass der Block nur in Zeilen ausgeführt wird auf die die RegExp passt. Weil in der Überschriftenzeile keine Zahlen sind passt die RegExp nicht und der Block wird nicht ausgeführt. Somit wird diese Zeile ignoriert.
Den zweiten Befehl muss ich mir erst mal auf der Zunge zergehen lassen,
haut aber hin.
Ob man schon bei `df' oder dann in `awk' die Auswahl für die entsprechende Zeile (/dev/sda2) trifft ist eigentlich irrelevant.
Wichtig ist halt auch wieder, dass awk nur die Zeile mit den eigentlichen Daten bearbeitet und dort das fünfte Feld ausgibt. Das sub() entfernt alle Prozentzeichen in der Zeile.

Alternativ wäre auch sowas möglich:

Code: Alles auswählen

df -h /dev/hda1 | awk 'NR==2 { sub(/%/,""); print $5 }'
Use ed once in a while!

Antworten