Saya memisahkan output dari id
untuk menyediakan daftar grup yang lebih mudah dibaca dari grup di mana pengguna menjadi anggota:
id roaima | sed 's/,/\n\t/g'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24(cdrom)
25(floppy)
...
822413650 (international (uk) location)
Saya ingin memisahkan nomor grup dari nama kurung sehingga saya memperluas ekspresi seperti ini
id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
Namun, ini tidak bertindak seperti yang saya harapkan pada awalnya. Ekspresi kedua tampaknya tidak berpengaruh.
Sebagai gantinya, untuk mendapatkan hasil yang saya inginkan, saya perlu menjalankan dua sed
perintah terpisah , seperti ini:
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)
Mengapa saya perlu dua sed
perintah dalam pipa daripada satu dengan banyak instruksi? Atau jika saya bisa melakukan ini dengan satu sed
, bagaimana saya melakukannya?
Apa yang saya terutama inginkan adalah memiliki ruang tunggal antara nilai UID / GID dan nama kurung untuk setiap item (termasuk UID dan GID di baris pertama), tetapi peringatannya adalah bahwa dalam data nyata saya, saya dapat memiliki grup mengandung tanda kurung dalam nama mereka dan aku tidak ingin nama itu hancur.
-vRS=,
atau-054
bisa membantu.Jika Anda memiliki GNU sed, Anda bisa menggunakannya
yang menambahkan spasi sebelum tanda kurung terbuka ke-4 dan berikutnya, kemudian menggantikan koma.
sumber
international (uk) location
nama-nama grup yang berisi tanda kurung seperti contoh saya ,, dengan menyisipkan ruang yang tidak diinginkan dalam nama itu sendiri.s/\([[:digit:]]\+\)(/\1 (/4g
yang hanya akan menambah spasi jika ada angka sebelum tanda kurung.Apa yang dikatakan @ stéphane-chazelas benar, tetapi Anda selalu dapat menambahkan spasi terlebih dahulu dan membaginya menjadi seperti ini:
Atau dalam satu skrip sed (tanpa
-e
):Kami biasanya menggunakan "
/
" sebagai pemisah dari pencarian perintah, tetapi ia menerima karakter apa pun juga, jadi kadang - kadang lebih mudah dibaca menggunakan karakter lain seperti ":
" untuk menghindari kombinasi seperti "/\
".sumber