/etc/passwdファイルからユーザー名を抽出する

/etc/passwdファイルからユーザー名を抽出する

/etc/passwd名前付きデータベースからすべてのユーザー名を抽出して出力をアルファベットの逆順に並べ替えるには、どのコマンドを使用しますか?

答え1

cut -d: -f1 /etc/passwd | sort -r

または

awk -F: '{print $1}' /etc/passwd | sort -r

実際にnsswitchを使用するシステム(たとえば、ほとんどの(すべてではありませんが)Linuxディストリビューションや他の多くの* nix)を使用している場合は、他の可能なユーザーアカウントデータソースがたくさんあるので、読むだけではなくgetent passwd使用する必要があります。/etc/passwd(LDAPおよびnisまたはypを含む):

getent passwd | cut -d: -f1 | sort -r
getent passwd | awk -F: '{print $1}' | sort -r

答え2

ホームディレクトリが/ homeにある実際の人を一覧表示するには、次のようにリストをフィルタリングできます。 grep home /etc/passwd|cut -d: -f1

答え3

sed 's/:.*//' /etc/passwd | sort -r

sed~であるSトレメ編集するitor は、テキスト編集コマンドをテキストデータストリームに適用するために使用されます。 sed使用一般的な表現テキスト行内のパターンと一致します。 一般的な表現grep、awk、emacs、vi、perl、pythonなどの多くのUnix / Linuxコマンドに共通です。したがって、正規表現を学習すると、さまざまなコマンドを使用する能力が向上します。

上記のsedコマンドは、sテキストの各行で機能を実行(交換)します。基本sコマンドは次のように動作します。

    `s/regular expression/replacement/`

sedこのコマンドの正規表現は、行の:.*最初のコロン(存在する場合)と一致し、その後に行の(暗黙的な)末尾にゼロ個以上の*他の文字()が続きます。これに一致するすべての項目を何もないものに置き換え、結果を印刷します。.sed

つまり、このsedコマンドは、行を印刷する前に最初のコロンから行末まですべてを削除します。

関連情報