2015-12-17 4 views
0

У меня проблема с сортировкой пользователей в группе. Я искал по сети и нашел это:Как сортировать пользователей в группе?

getent group <groupname> 

Так что я попытался с помощью этого кода в этом

getent group MyMembers | sort 

выход У меня есть только список пользователей в группе без нее отсортировано , Как

MyMembers : zat,bat,aky 
+1

'sort' сортирует строки, он не сортирует значения в одной строке. Вам нужно извлечь список имен пользователей из строки, разделить их на запятые и отсортировать их. – Barmar

ответ

1

Вы можете сделать это с помощью Python однострочника, как это:

python -c "import grp; print(','.join(sorted(grp.getgrnam('MyMembers')[3])))" 

где ',' это разделитель для результирующей строки и MyMembers это имя существующей группы.

+0

спасибо! ребята, это работает в сценарии bash? – Yves

+0

@ Да, конечно, если у вас установлен Python в вашей системе. Просто создайте файл оболочки с каждым выражением в отдельной строке: '#!/Bin/bash group = $ 1 python -c" import grp; print (','. Join (sorted (grp.getgrnam ('$ {group } ') [3]))) "' Сделать его исполняемым с помощью 'chmod + x file.sh' или что-то в этом роде. И используйте этот способ: './file.sh MyMembers' – vrs

1

В качестве альтернативы, вы можете достичь той же цели с помощью только AWK и СЭД:

grep ^MyMembers /etc/group | awk -F: '{print $4}' | tr , "\n" | sort | tr "\n" , | sed '[email protected],[email protected]\[email protected]' 

Эта команда grep с для имени группы в /etc/group файл, а затем НТИП неупорядоченный строку разделенных запятыми пользователей с awk, затем преобразует строку в список с tr, сортирует ее с sort, снова строит строку с tr, а затем удаляет запятую после последнего элемента в строке и добавляет новую строку с sed.

Смежные вопросы