С awk
awk -F: '{i++} $3>=47 {j++} END {print "total="i,"\n>46="j}' /etc/passwd
total=40
>46=23
i++
приращение i для каждой строки дает общее значение.
$3>=47 {j++}
Проверка, если поле 3 больше 46
print "total="i,"\n>46="j
Печать iи j
Короткое, насколько это возможно: проверка на larger than 46
, поскольку она равна larger than and equal to 47
awk -F: '{i++}$3>46{j++}END{print i,j}' /etc/passwd
Как отмечает Эд, NR
(Количество записей) делаетсодержит всего записей.
Так еще короче:
awk -F: '$3>46{j++}END{print NR,j}' /etc/passwd