Я розбивав вихід, 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
може допомогти.