id
Bir kullanıcının üyesi olduğu grupların daha okunabilir bir satır liste listesi sağlamak için çıktıyı bölüyordum :
id roaima | sed 's/,/\n\t/g'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24(cdrom)
25(floppy)
...
822413650 (international (uk) location)
Grup numarasını köşeli ayraçlı adından ayırmak istedim, böylece ifadeyi böyle genişlettim
id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
Ancak, başlangıçta beklediğim gibi olmadı. İkinci ifadenin bir etkisi olmadığı görülmüştür.
Bunun yerine, istediğim sonucu elde etmek için sed
, şu gibi iki ayrı komut çalıştırmam gerekiyordu :
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)
Neden sed
birden fazla talimat içeren bir boru yerine iki komutta iki komuta ihtiyacım var ? Veya bunu biriyle yapabilirsem, bunu sed
nasıl yapardım?
Özellikle istediğim, her bir öğe için UID / GID değeri ve parantez adı arasındaki tek boşluğa sahip olmaktır (ilk satırdaki UID ve GID'ler dahil), ancak uyarı, gerçek verilerimde gruplara sahip olabileceğimdir. isimlerinde parantez içeren ve isimlerin kendilerinin karıştırılmasını istemiyorum.
-vRS=,
veya-054
yardımcı olabilir.