Linux bash下如何将指定用户组内的所有用户逐行单独显示
解决方案
你可以直接用以下任意一种Linux命令行实现需求:
方案1:单awk命令实现(无需提前grep,一步完成)
awk -F: '/^visitors:x:1011:/{split($4,a,",");for(i in a) print a[i]}' /etc/group
逻辑说明:用冒号作为字段分隔符,匹配到visitors组对应的行后,将第四个字段(也就是所有成员的逗号拼接字符串)按逗号拆分为数组,逐行输出数组元素即可。
方案2:基于你现有grep命令改造,更易理解
grep 'visitors:x:1011:' /etc/group | cut -d: -f4 | tr ',' '\n'
逻辑说明:
- 原有grep命令拿到visitors组的整行内容
cut -d: -f4切掉前缀,只保留冒号分隔的第四段成员列表tr ',' '\n'将所有逗号替换为换行符,实现每个用户名单独占一行的效果
如果你的实际返回末尾有示例里的etc..多余内容,只要在命令末尾加过滤规则即可,比如追加 | grep -v ' etc\.\.' 就能删掉这行无效内容。
内容的提问来源于stack exchange,提问作者Mikail Nicholas
相关产品推荐
相关产品推荐

