Jawaban:
Karena sed bukan perl - regex sed tidak memiliki tulisan cepat \d:
sed 's/[[:digit:]]\+\.//g'
sed dokumentasi ekspresi reguler di sini .
/[[:digit:]]*\. /akan cocok dengan string foo.karena Anda mengizinkan nol digit. Jika Anda ingin satu atau lebih penggunaan \+seperti yang ditunjukkan
Dua masalah:
sedtidak mendukung \d. Gunakan [0-9]atau [[:digit:]].
+harus backslashed untuk mendapatkan arti khusus: \+.
interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's).Sedihnya, ini tidak membantu dengan masalah \ d ...
-Etidak berfungsi untuk GNU sed, ia digunakan -rsebagai gantinya.
sedmenyebalkan ketika datang ke portabilitas ...
-Epada BSD sed dan -rpada GNU sed), di BSD sed, tidak +juga \+(sama dengan ?) akan bekerja sama sekali, sedangkan di sed GNU Anda bisa buat mereka untuk bekerja dengan backslash. Oleh karena itu rekomendasi umum untuk menggunakan regex diperpanjang dalam skrip
Halaman manual sed merujuk ke halaman manual re_format. Itu membuat 2 perbedaan: (1) usang dan ekspresi reguler yang diperluas; (2) ekspresi reguler tidak ditingkatkan versus ditingkatkan. Semua 4 kombinasi dimungkinkan. Ada dukungan sed untuk kedua usang dan diperpanjang, tetapi dalam kedua kasus hanya untuk non-ditingkatkan. Operator adalah fitur ekspresi reguler yang disempurnakan, oleh karena itu tidak didukung oleh sed.