Eu estava dividindo a saída idpara fornecer uma lista mais legível de linha por lista de grupos dos quais um usuário é membro:
id roaima | sed 's/,/\n\t/g'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24(cdrom)
25(floppy)
...
822413650 (international (uk) location)
Eu queria separar o número do grupo do nome entre colchetes, então estendi a expressão assim
id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
No entanto, isso não funcionou como eu esperava inicialmente. A segunda expressão parecia não ter efeito.
Em vez disso, para obter o resultado desejado, eu precisava executar dois sedcomandos separados , como este:
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)
Por que preciso de dois sedcomandos em um pipe, em vez de um com várias instruções? Ou se eu posso fazer isso com um sed, como eu faria?
O que eu particularmente gostaria de ter é o espaço único entre o valor UID / GID e seu nome entre colchetes para cada item (incluindo o UID e GIDs na primeira linha), mas a ressalva é que, em meus dados reais, posso ter grupos contendo colchetes em seus nomes e eu não quero que os nomes sejam mutilados.
-vRS=,ou-054poderia ajudar.