/etc/passwd の Grep 専用 gid [閉じる]

/etc/passwd の Grep 専用 gid [閉じる]

grepのグループIDだけを含めたいです/etc/passwd。これで名前を見つける方法を見つけました。

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

これは私に次のことを与えます:

[frynio@manjaro ~]$ grep -oE '^[^:]+' /etc/passwd
root
nobody
dbus
bin
daemon
mail
ftp
http
systemd-journal-remote
systemd-coredump
uuidd
dnsmasq
rpc
usbmux
avahi
colord
cups
deluge
git
lightdm
nm-openconnect
nm-openvpn
ntp
polkitd
frynio

:最初の3つを省略して一致を開始するようにこの正規表現をどのように変更しますか[^:]+? (^行の先頭と一致するので、名前を抽出でき、コロン3つ以降の位置と一致したいと思います。)

PSワン持つ使用grep

ベストアンサー1

これは不可能標準と同様に、grep与えられたgrepパターンに一致する行全体が常に返されます。 GNUは可能grepですが、他の多くのタイプのUniceに移植することはできず、メンテナンス(またはより興味深いタスクを実行するために変更)が困難で理解しにくいです。

使いやすくなりましたawk:

getent passwd | awk -F ':' '{ print $4 }'

これによりpasswdデータがインポートされ、4番目:に区切られたフィールドが抽出されます。

または、より簡単に以下を使用してくださいcut

getent passwd | cut -d ':' -f 4

awk1000未満のUIDのGIDのみを取得するなど、より興味深い処理を実行できますが:

getent passwd | awk -F ':' '$3 < 1000 { print $4 }'

:出力で3番目に区切られた列を解析することを選択することもできます。getent groupこれは重複項目を提供しないという追加の利点があります。

getent group | cut -d ':' -f 3

おすすめ記事