Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Использование перенаправлений и конвейера  (Прочитано 626 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ghost675

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Задание
Определить количество пользователей из группы.


В качестве примера
Определить общее количество студенческих групп.
Решение:

ls -ld ../* | Команды выполняются из домашнего каталога пользователя - /home/имя_пользователя, а информацию о созданных для групп каталогах можно получить из каталога /home/, который может адресоваться из текущего каталога как: ../. Выводим информацию о содержимом этого каталога. Опция -l указывается, чтобы получить полную информацию, включая группу, опция -d предотвращает обход подкаталогов. Печать команды ls перенаправляется в поток.

grep "^d.\{24\}ap" | Признак подкаталога - буква "-d" в первой позиции выдачи команды ls, а имена групп начинаются c 25-й позиции выдачи. Команде grep задается шаблон, который определяет признак каталога в 1-й позиции и имя группы, начинающееся с букв "ap".

sed -n 's/[ ]\{2,\}/ /gp' | Поскольку дальше потребуется выделять поля, избавимся от множественных пробелов с помощью команды sed.

cut -f4 -d ' ' | Выделяется 4-е поле, содержащее имя группы.

sort |Результат сортируется, это понадобится для следующей команды. Поскольку сейчас в тексте остался только один столбец, никаких опций для сортировки мы не указываем.

uniq | Одна и та же группа повторяется для многих каталогов, поэтому следует избавиться от повторяющихся строк.

wc -l Команда wc подсчитывает число оставшихся строк, результат выводится на печать.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Плохая идея парсить вывод ls
Что касается ответа на Ваш вопрос, то возможно стоит использовать /etc/passwd:
Код: (bash) [Выделить]
grep -c ":имя_группы:" /etc/passwd
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 754
    • Просмотр профиля
Re: Использование перенаправлений и конвейера
« Ответ #2 : 01 Декабря 2015, 15:37:37 »
Плохая идея парсить вывод ls
Что касается ответа на Ваш вопрос, то возможно стоит использовать /etc/passwd:
Код: (bash) [Выделить]
grep -c ":имя_группы:" /etc/passwd
Там же не только студенческие группы. Можно, конечно по uid отфильтровать.



ТС, так в чем вопрос-то?

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.