web-dev-qa-db-ja.com

/ etc / passwdのいくつかのフィールドを出力します

Linuxでのワイルドカードの使用について質問があります。ここでは、/ etc/passwd -fileの長い行のリストからいくつかの行があります。

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
...

この行からユーザー名、UID番号、GID番号のみを出力するための適切なコマンドは何ですか(可能な場合、複数の方法を示してさらに詳しく調べることができます)?

4
cash

組み込みのreadを使用する:

while IFS=: read -r user _ uid gid _; do printf "%s\t%s\t%s\n" "$user" "$uid" "$gid"; done </etc/passwd

これにより、フィールド区切り文字が:に設定され、必要なフィールドを印刷する前に、_で不要な変数が破棄されます。

1
jasonwryan