Как напечатать все имена пользователей с одинаковыми UID в /etc/passwd
?
Это моя команда
$ awk -F: '{print $3, $1}' us.txt | sort
0 daemon
0 pepe
0 root
2 bin
2 jacinto
3 paco
Сохраните счет для каждого UID, и сохраните UIDs и затем распечатайте те записи, UIDs которых появились несколько раз:
awk -F: '{count[$3]++; users[$3] = $1 " " users[$3]} END {for (i in count) {if (count[i] > 1) { print users[i] } } }' /etc/passwd
Можно циклично выполниться через файл дважды:
awk -F: 'FNR==NR{count[$3]++; next}
count[$3]>1 && !seen[$1] {
print $1, $3, "("count[$3]" times)"; seen[$1]++
}' /etc/passwd{,}
Как один лайнер:
awk -F: 'FNR==NR{count[$3]++; next} count[$3]>1 && !seen[$1] {print $1, $3, "("count[$3]" times)"; seen[$1]++}' /etc/passwd{,}
демонстрационный вывод А был бы:
root 0 (2 times)