PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : awk und Suche nach einem bestimmten Zeilenanfang



bash_azubi
16-09-2004, 10:10
Hi Leute,
ich habe unter debian/woody und der bash ein Problem mit einem eigentlich einfachen awk Einzeile.
Ich habe eine Datei, die folgendermassen aussieht:
(output aus du * -sh)
991M User1
941M User 4
920k User 2
900k User 8
...

Ich möchte jetzt nur die angezeigt bekomen, die einen zweistelligen Megabyte Betrag in ihrem Homeverzeichnis haben.
Mein Ansatz:


cat Belegung | awk '/^[^[[:digit:]]{2,}k]/ { print $0 }'
^[ die Zeile fängt mit dem nachfolgenden Ausdruck an
^ negiert die Auswahl
[[:digit:]] matched auf eine Zahl
{2,} matched auf 2 bis mehr Stellen
k ich will auf das k filtern

Was stimmt daran nicht, ich sehe den Fehler einfach nicht mehr :(

fs111
16-09-2004, 12:44
Erstmal Useless use of cat!

Zu Deinem Problem:

awk '/^[0-9][0-9]+M/ { print $0 }' foo.txt

sollte gehen. Das gibt aber auch dreistellige vierstellige etc. aus. Wenn Du das nicht willst, nimm das "+" weg.

Grüße fs111

bash_azubi
16-09-2004, 20:31
OMFG [0-9] ist das naheliegendste überhaupt.
Ich danke dir vielmals für die Erleuchtung :)

Ich habe mitlerweile auch eine _richtig_ gute site zu Regex gefunden:
http://www.regenechsen.de/regex_de/regex_1_de.html