
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 awk
jede 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 who
sieht 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 awk
Befehl würde Folgendes erzeugen:
user1
user1
aperson
Sie können die Ausgabe weiterleiten, awk
um sort -u
Duplikate zu entfernen.