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番号のみを出力するための適切なコマンドは何ですか(可能な場合、複数の方法を示してさらに詳しく調べることができます)?
組み込みのread
を使用する:
while IFS=: read -r user _ uid gid _; do printf "%s\t%s\t%s\n" "$user" "$uid" "$gid"; done </etc/passwd
これにより、フィールド区切り文字が:
に設定され、必要なフィールドを印刷する前に、_
で不要な変数が破棄されます。