LINUX.ORG.RU

Найти строку с максимальным числом запятых в /etc/group

ttnl ★★★★★
()
Ответ на: комментарий от tempuser002

а в названии группы точно не может быть запятых? Имхо более корректно считать запятые только в конкретном поле, а не всей строке.

dilmah ★★★★★
()

2ALL: Вы забыли, что есть еще и primary group

Т.е. в /etc/group может быть группа users, в которой как бы никого и нет, но в passwd все юзеры принадлежат ей.

sdio ★★★★★
()
Ответ на: комментарий от sdio

а ось вам быдлокод:

$ for g in `cat /etc/group | awk -F: '{print $1}'`; do z=''; for u in `cat /etc/passwd | awk -F: '{print $1}'`; do z+=$(groups $u | grep -c $g) ; done ; echo "$g : $z" ; done

;)

anTaRes ★★★★
()
Ответ на: комментарий от anTaRes
$ awk -F':' '$3 > 500 && $1 != "nobody" {system ("groups "$1)}' /etc/passwd | awk '{for(i=3;i<=NF;i++) {g[$i]++}}; END {for (k in g) print g[k], k}' | sort -n | tail -1

4 audio

$ awk -F':' '{system ("groups "$1)}' /etc/passwd | awk '{for(i=3;i<=NF;i++) {g[$i]++}}; END {for (k in g) print g[k], k}'  |sort -n | tail -1

6 nogroup
sdio ★★★★★
()

Сейчас сюда придет какой-нибудь умник, и скажет, что нужно было использовать getent :)

tailgunner ★★★★★
()

хм... сессия видимо подкралась... наверное какой-нибудь курс, навроде «операционные системы», или «основы unix»?

:)

Cy6erBr4in ★★★
()
Ответ на: комментарий от sdio

таки спасибо за дополнительный стимул потратить время и наконец подучить awk глубже чем '{print $номерстолбца}' :)

anTaRes ★★★★
()
Ответ на: комментарий от anTaRes

Спасибо за ответы. Как были правы, подкралась именно сессия. из 4-х задач не решил только эту. и решить ее нужно именно на шеле без использования команды awk. Причем задание немного изменилось... Нужно отсортировать группы зарегистрированные в системе по числу пользователей , входящих в каждую из них, результат сортировки выдать на экран консоли. Как это сделать?:)

VitalySM
() автор топика
Ответ на: комментарий от dilmah

то есть я использую этот код: без обрезки выходного отсортированного списка по tail: cat /etc/group | awk -F: '{ print split($4,a,",") «\t» $1 }' | sort -n -k1 спасибо. это решение мне подходит:) только уточненение. как написал в предыдующем посте, можно ли как-то заменить вывод команды awk (awk -F: '{ print split($4,a,",") «\t» $1 }') использованием других команд шела? просто интересно.. задача уже решена:)

VitalySM
() автор топика
Ответ на: комментарий от VitalySM

что за ересь — шелл без awk? институт тяжелой велосипедостроительной промышленности? :)

moot ★★★★
()
Ответ на: комментарий от VitalySM

Баш умеет работать с массивами. Думаю так.

sin_a ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.