检查 /etc/passwd 中的用户是否存在于不同文件中的命令

检查 /etc/passwd 中的用户是否存在于不同文件中的命令

是否可以查询 /etc/passwd 文件以查看所有小于 200 的用户 UIDS 并检查这些用户是否在 /etc/ftpusers 等文件中?

到目前为止,我已经成功编写了下面的命令,列出了 UID 低于 200 的所有用户,但我不确定如何检查这些列出的用户是否在 /etc/ftpusers 文件中。

grep -Ev "^\+" /etc/passwd | awk -F: '($3 < 200) {print $1}'

如果文件中没有任何用户,我需要输出差异。我尝试过使用 for 语句,但效果不佳。

答案1

我不知道是否aix diff有相同的选项GNU diff,但在我的this 中使用(默认 shell )工作linux执行时:kshaix

diff -I "^#" --new-line-format="" --unchanged-line-format="" <(awk -F: '$3 < 200  {print $1}' /etc/passwd) /etc/ftpusers

如果diff命令不同,请尝试使用循环:

for u in $(awk -F":" '$3 < 200 {print $1}' /etc/passwd); do
        count=$(grep -scx "$u" /etc/ftpusers)
        [ "$count" -gt 0 ] || echo "$u"
done

我已经测试过它ksh并且它有效。

我还检查了分布式惠特grep中可用的选项,它支持计数和抑制错误消息。grepaix-c-s

相关内容