我将输出从中分离出来,id
以提供一个更具可读性的按行列出的用户所属的组列表:
id roaima | sed 's/,/\n\t/g'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24(cdrom)
25(floppy)
...
822413650 (international (uk) location)
我想将组号与其方括号中的名称分开,所以我像这样扩展了表达式
id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
但是,这并没有达到我最初的预期。第二个表达式似乎没有作用。
相反,要获得所需的结果,我需要运行两个单独的sed
命令,如下所示:
id roaima | sed -e 's/,/\n\t/g' | sed '2,$s/(/ (/'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24 (cdrom)
25 (floppy)
...
822413650 (international (uk) location)
为什么sed
在管道中需要两个命令,而不是一个带有多个指令的命令?或者,如果我可以做到这一点sed
,我将如何做?
我特别希望在每个项目的UID / GID值与其加括号的名称之间有一个空格(包括第一行的UID和GID),但要注意的是,在我的真实数据中我可以有组名称中包含方括号,我不希望名称本身被弄乱。
-vRS=,
或-054
可能会有所帮助。