当我使用命令 groups userid 时,它会列出当前分配给该用户的 100 多个组。我只需要列出包含abc
.
当我这样做时,groups userid | grep abc
在输出中列出了所有组(超过 100 个),并abc
突出显示了匹配的组。是否可以仅列出包含 的组abc
?
答案1
尝试这个:
groups <username> | tr ' ' '\n' | grep "abc"
要点是在操作groups <username>
时用空格分隔每个组grep
线。这就是为什么您可以简单地\n
使用换行符交换空格tr
,然后使用grep
。
您可以尝试使用此命令(末尾不带| grep "abc"
)来查看中间结果。
答案2
首先,让我们仅匹配给定的组名称,避免其他组名称中的任何子字符串匹配:
$ groups
foo foobar baz ban bat
$ groups | grep --regexp=foo --regexp=ban --word-regexp
[outputs "foo foobar baz ban bat" with only "foo" and "ban" highlighted]
仅列出实际匹配项:
$ groups | grep --only-matching --regexp=foo --regexp=ban --word-regexp
foo
ban