Saya memiliki baris berikut:
abababtestab
Saya mencoba mencari sed
ekspresi untuk menghapus semua kemunculan dari ab
awal baris sehingga garis yang diubah harus:
testab
Saya merasa ini harus sederhana, tetapi saya benar-benar tidak tahu apa-apa sed
.
Sejauh ini yang saya miliki adalah:
sed 's/^ab//'
Tapi ini hanya menghilangkan kemunculan pertama ab.
sed
dari sekitar tahun 1979 mendukungnya. Itu harus menjadi imitasi rendah untuk tidak menangani pengelompokan.\n*
, tetapi tidak\n\{min,max\}
.\(...\)*
, atau\(...\)\{min,max\}
, sebagai hasil yang tidak disengaja dari implementasi tertentu, dan mereka mendukung duplikasi dan ekspresi interval berikut sub-ekspresi dan referensi-kembali.\(ab\)\1*
versi berfungsi dengan heirloom defaultsed
, dan\(ab\)*
versi bekerja dengan heirloom SuSv4sed
. Setidaknya, itu untuk build saya. Harus diakui, saya membangun pusaka yang dipasang pada musl lib C, dan dengan demikian saya bisa membayangkan hal itu dapat menyebabkannya berperilaku berbeda. Tapi biasanya ketika fitur yang ditentukan bekerja pada heirloom SuSv4 heirloom tool tetapi tidak di tool default, itu karena dev membuatnya.Lainnya
sed
:Dengan setiap baris input, kami membuat label
:1
, lalu melakukans
penggantianab
di awal baris. Jikas
ubstitusi berhasil,t
est cabang perintah untuk label1
, ulang pekerjaan sampai tidak adaab
pola yang muncul di awal baris, kita selesai.sumber
s/^ab//; t1
sudah cukup