我需要做的是從etc/group
獲取用戶列表,然後對其進行排序,然後對唯一條目進行計數。對字符串數組中的唯一條目進行排序和計數
現在我只設法獲取用戶名。但我懷疑這是錯誤的。
#!/bin/bash
usernames=();
while IFS=: read -r Groups Tmp1 Tmp2 Username
do
if [ $Username!="" ];
then
usernames+=($Username);
fi;
done < /etc/group
然後,我還試圖對它進行排序,但輸出非常怪異:
排序:
IFS=$'\n' sorted=($(sort <<<"${usernames[*]}"))
unset IFS
輸出:
echo ${usernames[@]}
echo ""
echo ${sorted[@]}
結果:
root root root root root root _teamsserver root root _taskgated root root,_jabber,_postfix,_cyrus,_calendar,_dovecot _calendar,_jabber,_postfix _devicemgr,_teamsserver _eppc root _teamsserver _devicemgr _softwareupdate _locationd _teamsserver _devicemgr,_calendar,_teamsserver,_xserverdocs _teamsserver,_devicemgr _warmd
_calendar,_jabber,_postfix _devicemgr _devicemgr,_calendar,_teamsserver,_xserverdocs _devicemgr,_teamsserver _eppc _locationd _softwareupdate _taskgated _teamsserver _teamsserver _teamsserver _teamsserver,_devicemgr _warmd root root root root root root root root root root root,_jabber,_postfix,_cyrus,_calendar,_dovecot
我有零bash的經驗,絕對不能得到它的工作。
我需要什麼最基本的解決方案來獲取來自/ etc/group的用戶名的排序列表,只有唯一的條目和打印每個的重複數量。
對於離,如果我有這個/etc/group
文件:
nobody:*:-2:
nogroup:*:-1:
wheel:*:0:root
daemon:*:1:root
kmem:*:2:root
sys:*:3:root
tty:*:4:root
operator:*:5:root
mail:*:6:_teamsserver
我想這一點:
root 6
_teamsserver 1
請添加一個可驗證的樣本我/ p和預期o/p。你的'/ etc/group'文件和你的輸出格式。 – Inian
嘗試'cut -d:-f1/etc/group |排序| uniq -c' – Sundeep
剛剛添加了所需的示例 – s1ddok