Eu estava dividindo a saída id
para 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 sed
comandos 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 sed
comandos 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-054
poderia ajudar.