grep Befehl

Hi

Ich habe eine kurze Frage zu dem grep Befehl.

Angenommen ich möchte mir von der passwd Datei nur Zeilen ausgeben lassen, bei welchen der Login mindestens aus 4 Buchstaben besteht.

Wie geht das?


cat /etc/passwd | cut -d":" -f1 | grep ???

Auf diese Art habe ich es bereits versucht, sodass mir nur noch der Login angegeben wird, aber wie wähle ich nur Zeilen aus, welche mindestens aus 4 Buchstaben bestehen?

Bitte um Hilfe.

LG
 
Also in dem Fall würde ich eher egrep nehmen, da du mit regulären Ausdrücken schneller zum Ergebnis kommst. Was du willst ist folgendes:
Code:
egrep "^[^:]{4,}:" /etc/passwd | cut -d: -f1
 
@onetime:
Mit den Standard utils führen hier sehr sehr viele Wege nach Rom.
Ich möcht aber nur kurz die Lösungen erklären...

egrep "^[^:]{4,}:" /etc/passwd

Code:
^		Regex muss am Anfang stehen
[^:]	Jedes Zeichen, außer Doppelpunkt
{4,}	Mindestens 4 mal (genauer: n,m mal, wobei n=4 und m=unendlich)
:		Auf das ein Doppelpunkt folgt

awk -F: 'length($1) > 4 { print $1 }' /etc/passwd
Nunja... teile die Zeile anhand von Doppelpunkten und geben jede Zeile aus, deren erster Teil (Spalte) länger als 4 ist. Du brauchst hier kein cut mehr, weil man mit $1 sowieso nur die erste Spalte ausgibt.
 
Super, vielen Dank für die Lösung und die tolle Erklärung!

Habe es noch geringfügig umgeändert:
egrep "^[[:alpha:]]{4,}:" /etc/passwd

Da ja nur Logins bestehend aus Buchstaben ausgegeben werden sollen.
[FONT=&quot] [/FONT]
 
Hätte noch eine weitere Frage bezüglich grep.

Wie lasse ich mir die Logins ausgeben, die nicht eine zweistellige Gruppen ID besitzen?

Wäre nett, wenn mir das noch jemand zeigen könnte.


LG
 
Die GID stand an dritter Stelle, oder?

Dann müsste das ungefähr so aussehen:
Code:
[^:]*:[^:]*:(\d{1}|\d{3,})

Bin aber müde, also keine Gewähr ;)
 
Dazu braucht man eigentlich nur den Regex erweitern (zumindest wenn man es in einem Befehl abdecken will)

Code:
egrep "^[[:alpha:]]{4,}:[^:]*:[^:]*:([^:]|[^:]{3,}):" /etc/passwd

Einfach ausgedrückt: An Stelle, wo die GID steht, müssen 1 oder mindestens 3 Zeichen stehen.
 
Erstmal danke für die Hilfe.

Könntet ihr bitte die Befehle etwas genauer erklären?

Und warum:
^[[:alpha:]]{4,}
Ein Login kann ja auch z.B. nur 3 stellig sein oder hat das was anderes zu bedeuten?
 
Achso, dann haben wir uns nur missverstanden.

Die Lösung zu meiner ersten Frage ist mir schon klar.

Ich werde mir die Links einmal ansehen, danke.
 
Zurück
Oben