Saya menggunakan sed. Saya menggunakan regex yang benar sejauh yang saya bisa lihat, tetapi sed tidak melakukan apa-apa. Ternyata saya menggunakan \s+
yang tidak bisa mengerti, dan ketika saya beralih ke [ ]+
itu berhasil.
Jadi singkatnya, saya membuat regex yang berfungsi agar saya harus melarikan diri dari hampir semua dan menghapus \s
spasi putih. Tampaknya ada mode untuk menghindari semua ini yang -r
Jadi saya ingin bertanya:
- Mengapa bukan
-r
mode default untuk sed? Kenapa aku harus bersusah payah untuk melarikan diri semuanya? man
mengatakan bahwa ada opsi--posix
dan "POSIX.2 BREs harus didukung" Apa artinya ini? Mode NFA / DFA?
\s+
digunakan[[:space:]][:space:]]*
di BRE dan yang sama atau[[:space:]]+
di ERE.Jawaban:
Re 1) Jawabannya sama dengan alat lain yang diperbaiki selama beberapa dekade. :)
Anda tidak ingin memecah skrip yang ada dengan mengubah perilaku default.
Re 2) Itu tidak ada hubungannya dengan mesin yang cocok; itu hanya pertanyaan yang set ekspresi reguler yang didukung. POSIX BRE berarti "ekspresi reguler dasar".
sumber
Mengenai poin 2:
gnu sed
menggunakan GNUBRE
secara default. Untuk menggunakan POSIXBRE
Anda harus menentukan--posix
sumber