Apa arti karakter # dalam: / bin / sed -e # abc # zzz # g '?


Jawaban:


14

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'

24

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 sedekspresi 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

Mungkin perlu dicatat bahwa setidaknya dalam GNU sed, /dapat digantikan oleh karakter alternatif dalam konteks selain dari perintah s(pengganti) - tetapi dalam hal itu perlu untuk melarikan diri pertama kali misalnya sed '/foo/d'(menghapus pencocokan garis foo) menjadised '\#foo#d'
steeldriver

@steeldriver memang! - Saya melihat bahwa Ravexina menambahkan itu pada jawabannya, jadi saya mungkin akan meninggalkan milik saya :)
Zanna

1
Tidak penting apakah aliran mengandung karakter pemisah. Yang penting adalah apakah string pencarian atau string pengganti berisi karakter pemisah.
kasperd

@kasperd oh ya, benar. Saya sedikit diedit :)
Zanna

Jawaban @ Zanna lebih tepatnya: Karakter pertama setelah perintah "s" menentukan pemisah yang digunakan dalam perintah ini. Anda dapat menggunakan karakter apa pun di sini. sbabebmelakukan hal yang sama dengan s/a/e/.
rexkogitans
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.