Apa arti #
karakter di baris ini:
/bin/sed -e 's#abc#zzz#g'
Apa arti #
karakter di baris ini:
/bin/sed -e 's#abc#zzz#g'
Jawaban:
Itu pemisah, sama seperti "/"
, itu sama dengan 's/abc/zzz/g'
.
itu berarti mencari "abc" menggantikannya dengan "zzz", dengan bendera global, berarti melakukannya untuk semua "abc" di telepon, bukan hanya yang pertama.
Anda juga dapat menggunakan pemisah alternatif untuk alamat pola, tetapi dalam hal ini, Anda harus menghindarinya agar dapat ditafsirkan dengan benar:
sed -r '\#abc#p'
Ini pembatas atau pemisah. Yang paling umum digunakan adalah /
seperti pada
sed 's/old/new/' file
Tapi sed akan mengambil karakter pertama setelah perintah sebagai pembatas. Anda dapat menggunakan karakter apa pun yang nyaman, misalnya ...
sed 's%old%new%' file
Ini sangat berguna jika file tersebut berisi /
(atau karakter pembatas konvensional lainnya). Anda dapat memilih sebagai pemisah beberapa karakter yang Anda tahu tidak perlu dimasukkan ke dalam sed
ekspresi Anda , sehingga Anda tidak perlu repot melarikan diri.
Katakanlah Anda ingin mengganti
/ubuntu//questions
dengan
/ubuntu//posts
Anda bisa menggunakannya
sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file
Tapi lebih baik digunakan
sed 's|/ubuntu//questions|/ubuntu//posts|' file
sbabeb
melakukan hal yang sama dengan s/a/e/
.
/
dapat digantikan oleh karakter alternatif dalam konteks selain dari perintahs
(pengganti) - tetapi dalam hal itu perlu untuk melarikan diri pertama kali misalnyased '/foo/d'
(menghapus pencocokan garisfoo
) menjadised '\#foo#d'