Dzieliłem dane wyjściowe, id
aby 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 sed
polecenia, 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 sed
poleceń 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-054
może pomóc.