jac*_*dez 4 users duplicate shell-script
我正在使用以下代码查找重复的用户名。但是,它给出了一个错误。
#!/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
Run Code Online (Sandbox Code Playgroud)
我在标记“完成”和数字错误附近遇到语法错误。我该如何解决这个错误?
$ cut -d: -f1 /etc/passwd | sort | uniq -d
Run Code Online (Sandbox Code Playgroud)
这将提取:-delimited /etc/passwd-file的第一个字段(用户名),对结果进行排序并报告任何重复项。
还要获取 UID 和其余重复passwd条目:
cut -d: -f1 /etc/passwd | sort | uniq -d |
while read -r username; do
grep "^$username:" /etc/passwd
done
Run Code Online (Sandbox Code Playgroud)
只获取重复的用户名及其 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
Run Code Online (Sandbox Code Playgroud)
关于脚本的简短说明。语法看起来基本没问题,但你需要;afterbreak并且两者后面都有一个空格\(这可能是一个剪切和粘贴错误(现在被编辑删除))。此外,如果没有充分的理由,我会避免提供标准实用程序的完整路径,并且该awk程序不需要 GNU,awk所以就awk可以了。