getent passwd | awk -F : 'length($1) >= 5 && length($1) <= 10 { print $1 }'
Будут напечатаны имена пользователей длиной от 5 до 10 символов (включительно ).
Для самых коротких и самых длинных имен:
getent passwd |
awk -F : 's == "" || length($1) < length(s) { s = $1 }
l == "" || length($1) > length(l) { l = $1 }
END { printf("shortest: %s (%d chars)\n", s, length(s))
printf("longest: %s (%d chars)\n", l, length(l)) }'
Выполнение обеих операций за один проход по базе данных паролей (в виде полного bash
скрипта, хотя /bin/sh
этого должно было быть более чем достаточно, поскольку этот скрипт не использует bash
ничего конкретного, любая оболочка сможет его запустить):
#!/bin/bash
getent passwd |
awk -F : 'length($1) >= 5 && length($1) <= 10 { print $1 }
s == "" || length($1) < length(s) { s = $1 }
l == "" || length($1) > length(l) { l = $1 }
END { printf("shortest: %s (%d chars)\n", s, length(s))
printf("longest: %s (%d chars)\n", l, length(l)) }'