首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grep只发送/etc/passwd

Grep只发送/etc/passwd
EN

Unix & Linux用户
提问于 2018-10-28 20:51:48
回答 3查看 920关注 0票数 0

我只希望grep来自/etc/passwd的组ID。现在,我只想出了如何实现grep的名称,包括:

代码语言:javascript
复制
grep -oE '^[^:]+' /etc/passwd

这给了我:

代码语言:javascript
复制
[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

我如何更改这个正则表达式,省略前三个:s,然后开始与[^:]+匹配?(因为^在与行的开头匹配之前,这就是为什么我可以提取名称,并且我希望在3个冒号后匹配位置)。

我必须使用grep

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2018-10-28 22:38:33

如果您使用的是grep (这是linux上的缺省值),您可以使用-P选项和一个前瞻性断言来实现它:

代码语言:javascript
复制
grep -Po '[0-9]+(?=(?::[^:]*){3}$)' /etc/passwd
票数 2
EN

Unix & Linux用户

发布于 2018-10-28 21:55:57

允许使用两个grep进程吗?如果是,试着:

代码语言:javascript
复制
grep -oE '^([^:]+:){3}[^:]+' /etc/passwd | grep -oE '[^:]+
票数 1
EN

Unix & Linux用户

发布于 2018-10-28 22:30:51

是否允许使用pcregrep而不是常规的grep?如果允许,您可以这样做。

代码语言:javascript
复制
pcregrep -o2 '^([^:]+:){3}([^:]+)' /etc/passwd

pcregrep扩展了-o选项的功能,使其与分组子字符串匹配。在上面命令中的正则表达式中,[^:]+:匹配passwd文件字段,因此^([^:]+:){3}匹配前三个字段(用户名、密码字段和UID). ,下面的([^:]+)是regex中的第二个组,匹配第四个字段,即GID。-o2标志告诉pcregrep只输出第二个组。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/478296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档