宿題のために、すべてのユーザーリスト(ユーザー名のみを除く)を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はこの場合には適していません。getent
awkを使用してパスワードファイルをインポートして解析します(コロンで区切られた内容)。
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}'
非システムユーザーや組み込みユーザーを確保するためのものです。