Hilfe mit dem Befehl zum Suchen eines Benutzernamens mit weniger als 8 Zeichen

Hilfe mit dem Befehl zum Suchen eines Benutzernamens mit weniger als 8 Zeichen

Ich habe gerade mit einem Linux-Kurs begonnen und stecke mit meiner Aufgabe fest.

Ich muss die Benutzernamen von angemeldeten Benutzern mit Benutzernamen von weniger als 8 Zeichen finden. Hier ist der Befehl, den ich ausprobiert habe, der aber nicht funktioniert. Kann mir bitte jemand sagen, was ich möglicherweise falsch gemacht habe?

who | grep '[a-zA-Z0-9]\{1,7\}'

Der folgende Befehl gibt 8-stellige Benutzernamen zurück (ich habe es getestet und es funktioniert)

who | grep '[a-zA-Z0-9]\{8\}'

Antwort1

Wenn Sie nicht auf die Verwendung von beschränkt sind grep, würde ich die Verwendung von vorschlagen. Dadurch wird awkjede Zeile automatisch in durch Leerzeichen getrennte Spalten unterteilt und dann nach Zeilen gefragt, deren erste Spalte weniger als acht Zeichen enthält:

who | awk 'length($1) < 8 {print $1}'

Die Ausgabe davon whosieht folgendermaßen aus:

user1      pts/1        2019-11-24 16:31 (host1.example.com)
user1      pts/2        2019-11-24 16:31 (host1.example.com)
deadbeef   pts/3        2019-11-24 20:39 (host2.example.com)
aperson    pts/4        2019-11-24 20:39 (host3.example.com)
igotroot   pts/5        2019-11-24 20:39 (host4.example.com)

Der obige awkBefehl würde Folgendes erzeugen:

user1
user1
aperson

Sie können die Ausgabe weiterleiten, awkum sort -uDuplikate zu entfernen.

verwandte Informationen