/etc/passwdのユーザーが別のファイルにあることを確認するコマンド

/etc/passwdのユーザーが別のファイルにあることを確認するコマンド

/etc/passwdファイルを照会して200未満のすべてのユーザーUIDSを表示し、そのユーザーが/etc/ftpusersと同じファイルにあることを確認することは可能ですか?

これまでに、200未満のUIDを持つすべてのユーザーをリストするために次のコマンドを正常に作成しましたが、リストされたユーザーが/ etc / ftpusersファイルにあるかどうかを確認する方法がわかりません。

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

ファイルにユーザーがいない場合は、違いを出力する必要があります。 forステートメントを試してみましたが、正しく動作しません。

ベストアンサー1

aix diff同じオプションがあるかどうかはわかりませんが、実行時にGNU diffこのオプション(デフォルトシェル)を使用すると機能します。linuxkshaix

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

おすすめ記事