Finding duplicate users on CentOS Code Answer

Hello Developer, Hope you guys are doing great. Today at Tutorial Guruji Official website, we are sharing the answer of Finding duplicate users on CentOS without wasting too much if your time.

The question is published on by Tutorial Guruji team.

I’m using the following code to find the duplicate username. However, it gives an error.

#!/bin/bash
cat /etc/passwd | cut -f1 -d":" | /bin/sort -n | /usr/bin/uniq -c |
    while read x; do [ -z "${x}" ] && break set - $x
        if [ $1 -gt 1 ]; then
            uids=`/bin/gawk -F: '($1 == n) { print $3 }' n=$2 
            /etc/passwd | xargs`
            echo "Duplicate User Name ($2): ${uids}"
        fi
    done

I’m facing a syntax error near the token ‘done’ and numeric error. How can I fix this error?

Answer

$ cut -d: -f1 /etc/passwd | sort | uniq -d

This will extract the first field (the usernames) of the :-delimited /etc/passwd-file, sort the result and report any duplicates.

To also get the UID and the rest of the duplicated passwd entries:

cut -d: -f1 /etc/passwd | sort | uniq -d |
while read -r username; do
  grep "^$username:" /etc/passwd
done

To only get the duplicate usernames and their UID:

cut -d: -f1 /etc/passwd | sort | uniq -d |
while read -r username; do
  awk -F: -vu="$username" '$1 == u { print $1, $3 }' /etc/passwd
done

A short note on your script. The syntax looks mostly ok, but you need ; after break and there is a space after both (this may be a cut-and-paste error (now removed by an edit)). Also, I’d avoid giving full paths to standard utilities if there is no good reason for it, and the awk program does not require GNU awk so just awk will do.

We are here to answer your question about Finding duplicate users on CentOS - If you find the proper solution, please don't forgot to share this with your team members.

Related Posts

Tutorial Guruji