我试图找出我的/ etc / passwd中用户ID为0的所有用户。它应该显示用户名和用户ID。我尝试了以下方法:
awk -F: '{
count[$3]++;}END {
for (i in count)
print i, count[i];
}' passwd
它给出了重复的用户ID以及它们发生的次数。我实际上也想要用户名以及类似
的重复用户IDzama 0
root 0
bin 100
nologin 100
如果解决方案提供了awk关联数组,那将会很棒。其他方法也很好。
答案 0 :(得分:2)
这样做你想要的吗?
awk -F: '{
count[$3]++; names[$3 "," count[$3]] = $1}END {
for (i in count) {
for (j = 1; j <= count[i]; j++) {
print names[i "," j], i, count[i];
}
}
}' passwd
答案 1 :(得分:2)
这可能对您有用:
awk -F: '$3~/0/{if($3 in a){d[$3];a[$3]=a[$3]"\n"$3" "$1}else{a[$3]=$3" "$1}};END{for(x in d)print a[x]}' /etc/passwd
或这个非awk解决方案:
cut -d: -f1,3 /etc/passwd |
sort -st: -k2,2n |
tr ':' ' ' |
uniq -Df1 |
sed 's/\(.*\) \(.*\)/\2 \1/p;d'
答案 2 :(得分:-1)
myid=`cat passwd|awk -F: '{print $3 }'| sort | uniq -d`
for i in `echo "$myid"`;do
egrep "^.*:x:$i" passwd | awk -F: '{print $1 , $3}'
done