grep /etc/passwdでユーザーリストを取得する

grep /etc/passwdでユーザーリストを取得する

宿題のために、すべてのユーザーリスト(ユーザー名のみを除く)をgrep解析してインポートする必要があります。パイプを使用し、結果はファイル/etc/passwdで終わる必要があります。allusersこれが私が今まで持っているものです:

grep -i etc/password | .... >allusers 

私は何を見逃していますか?

答え1

ヒント

行の各フィールドは/etc/passwdコロンで区切られ、ユーザー名は最初のフィールドなので、最初のコロンの前の文字のみを表示するように各行をフィルタリングする必要があります。

回答

grepこれを行うのに最適なツールではありませんが、使用する必要がある場合は次のように動作します。

grep -oE '^[^:]+' /etc/passwd

-o行の一致部分のみを返すように指示します。後で使用できる-Eように拡張正規表現を有効にしてください。行の先頭に一致し、コロンを除くすべての項目に一致し、できるだけ多くの文字を表します。したがって、これは最初のコロンまで各行の先頭に一致します。+^[^:]+

このツール以外のツールにアクセスできる場合は、grep次の方法があります。

cut -d: -f1 /etc/passwd
sed 's/:.*//' /etc/passwd
awk -F: '{print $1}' /etc/passwd

これらのいずれかの結果は、次のようにallusersリダイレクト> allusersできます。

答え2

grepはこの場合には適していません。getentawkを使用してパスワードファイルをインポートして解析します(コロンで区切られた内容)。

getent passwd | awk -F ':' '{print $1}' > allusers

答え3

cat /etc/passwd | awk -F : '{print $1}' > alluser.txt

答え4

私は以下を使用しています:

grep -E 1[0-9]{3}  /etc/passwd | sed s/:/\ / | awk '{print $1}'

非システムユーザーや組み込みユーザーを確保するためのものです。

関連情報