Dzieliłem dane wyjściowe, idaby zapewnić bardziej czytelną listę grup po linii, do której należy użytkownik:
id roaima | sed 's/,/\n\t/g'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24(cdrom)
25(floppy)
...
822413650 (international (uk) location)
Chciałem oddzielić numer grupy od nazwy w nawiasach, więc rozszerzyłem wyrażenie w ten sposób
id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
Nie działało to jednak tak, jak początkowo oczekiwałem. Drugie wyrażenie wydawało się nie mieć żadnego efektu.
Zamiast tego, aby uzyskać pożądany wynik, musiałem uruchomić dwa osobne sedpolecenia, takie jak to:
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)
Dlaczego potrzebuję dwóch sedpoleceń w potoku zamiast jednego z wieloma instrukcjami? A jeśli mogę to zrobić za pomocą jednego sed, jak mam to zrobić?
Szczególnie chciałbym mieć pojedynczą spację między wartością UID / GID a jej nazwą w nawiasach kwadratowych dla każdego pojedynczego elementu (w tym UID i GID w pierwszym wierszu), ale zastrzeżeniem jest to, że w moich rzeczywistych danych mogę mieć grupy zawierające w nazwach nawiasy klamrowe i nie chcę, aby same nazwy były zniekształcone.
-vRS=,lub-054może pomóc.