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
awk
1000未満のUIDのGIDのみを取得するなど、より興味深い処理を実行できますが:
getent passwd | awk -F ':' '$3 < 1000 { print $4 }'
:
出力で3番目に区切られた列を解析することを選択することもできます。getent group
これは重複項目を提供しないという追加の利点があります。
getent group | cut -d ':' -f 3