Dividevo l'output da id
per fornire un elenco più leggibile riga per elenco di gruppi di cui un utente è 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)
Volevo separare il numero del gruppo dal nome tra parentesi, quindi ho esteso l'espressione in questo modo
id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
Tuttavia, questo non ha funzionato come inizialmente mi aspettavo. La seconda espressione sembrava non avere alcun effetto.
Invece, per ottenere il risultato che volevo, dovevo eseguire due sed
comandi separati , come questo:
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)
Perché ho bisogno di due sed
comandi in una pipe anziché uno con più istruzioni? O se posso farlo con uno sed
, come lo farei?
Quello che mi piacerebbe in particolare è avere il singolo spazio tra il valore UID / GID e il suo nome tra parentesi per ogni singolo elemento (inclusi UID e GID sulla prima riga), ma l'avvertenza è che nei miei dati reali posso avere gruppi contenenti parentesi nei loro nomi e non voglio che i nomi stessi vengano alterati.
-vRS=,
o-054
potrebbe aiutare.