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:
sed
tidak 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 ...
-E
tidak berfungsi untuk GNU sed, ia digunakan -r
sebagai gantinya.
sed
menyebalkan ketika datang ke portabilitas ...
-E
pada BSD sed dan -r
pada 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.