Tôi đã tách đầu ra từ id
để cung cấp danh sách các nhóm theo danh sách dễ đọc hơn của các nhóm mà người dùng là thành viên:
id roaima | sed 's/,/\n\t/g'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24(cdrom)
25(floppy)
...
822413650 (international (uk) location)
Tôi muốn tách số nhóm khỏi tên được đặt trong ngoặc để tôi mở rộng biểu thức như thế này
id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
Tuy nhiên, điều này không hoạt động như tôi mong đợi ban đầu. Biểu thức thứ hai dường như không có hiệu lực.
Thay vào đó, để có được kết quả tôi muốn, tôi cần chạy hai sed
lệnh riêng biệt , như thế này:
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)
Tại sao tôi cần hai sed
lệnh trong một ống chứ không phải một lệnh có nhiều lệnh? Hoặc nếu tôi có thể làm điều này với một sed
, tôi sẽ làm như thế nào?
Điều tôi đặc biệt muốn là có khoảng trắng duy nhất giữa giá trị UID / GID và tên được đặt trong ngoặc đơn cho mỗi mục duy nhất (bao gồm cả UID và GID trên dòng đầu tiên), nhưng lưu ý là trong dữ liệu thực của tôi, tôi có thể có các nhóm chứa dấu ngoặc trong tên của họ và tôi không muốn tên mình bị sai lệch.
-vRS=,
hoặc-054
có thể giúp đỡ.