2016-01-13 31 views
3

我试过getent,组命令,id -Gn $ user和一些sed组合,但是我不认为我能够实现,程序员。
我希望能够把它打印出来:组ABC123
输出 ABC123:DEVOPS构建测试设计如何在多行而不是单行输出上打印linux组名称

期望输出
组:
- DEVOPS
- 建立
- 测试
- 设计

+0

您可以从那里开始:groups abc123 | sed's// \ n -/g' 然后尝试改进 – Sergius

+0

如果你的shell是bash(或支持数组),你可以做一些简单的事情,比如'arr =($(groups)); printf“%s \ n”$ {arr [@]}'。如果你想要领先的'' - '',那么你可以做'arr =($(groups)); printf - “ - %s \ n”$ {arr [@]}' –

+0

谢谢@Sergius部分工作,但至少让我的sed权利:) – HazeCloud

回答

1

从我所看到的,你想你的用户群体转化为yaml阵列,尝试使用:

echo "groups:" ; for i in $(id -Gn myuser);do echo " - $i" ;done 

groups: 
    - users 
    - lp 
    - vboxusers 
    - kvm 

您可以使用太多:

echo "groups: [ $(groups myuser | sed -e 's/.\+\s\+:\s\+\(.\+\)/\1/g' -e 's/\(\s\+\)/, /g') ]" 

groups: [ myuser, lp, vboxusers, kvm ] 
+0

是的正确:)谢谢你会尝试所有建议一个接一个看看哪一个最适合我的脚本 – HazeCloud

+0

测试和这个工作出色 – HazeCloud

0

使用bash

for i in `groups`; do echo $i; done 

使用tr

groups | tr \ \\n 
+0

谢谢@bibi我必须学习新鲜玩意。我以前从未尝试过tr命令。这也适用 - 但是我们在组名前没有连字符的输出,但是我玩弄了一些,并且发现了它。 – HazeCloud

+0

这只适用于名称中没有空格的组! – Chris

相关问题