Я разделил вывод, 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
может помочь.