# AWK-Skript zur Ermittlung der Anzahl der Verwendung der einzelnen Shells laut # /etc/passwd # # Aufruf: # awk -f anz_shells.awk /etc/passwd # gawk -f anz_shells.awk /etc/passwd # # 4.3.2006 BEGIN { # Feldtrenner einstellen FS = ":" } # $7 --> Shell { shell = $7 # Zähler für aktuelle Shell inkrementieren SHELLS[shell]++ # maximale Länge der Shell-Bezeichnung ermitteln (wird für eine formatierte # Ausgabe benötigt) len = length(shell) if (len > maxlen) { maxlen = len } } END { # Sortierkommando: absteigend numerisch nach der Anzahl sortieren SORT = "sort -t: -k2,2 -rn" # Format-String zusammensetzen fmt = sprintf("%%-%ds: %%d\n", maxlen) # für alle Shells die Anzahl ausgeben; via Pipe werden die Ausgaben an sort # weitergereicht; sort gibt die sortierten Daten auf die Standard-Ausgabe aus for (shell in SHELLS) { printf(fmt, shell, SHELLS[shell]) | SORT } close(SORT) }