Ekspresi reguler datang dalam berbagai rasa. Yang Anda perlihatkan adalah ekspresi reguler Perl-like (PCRE, "Perl Compatible Regular Expression").
grepmelakukan ekspresi reguler POSIX. Ini adalah ekspresi reguler dasar (BRE) dan ekspresi reguler yang diperluas (ERE, jika grepdigunakan dengan -Eopsi). Lihat manual untuk re_formatatau regexmanual manual serupa apa pun yang dirujuk manual Anda greppada sistem Anda, atau teks standar POSIX yang baru saja saya tautkan.
Jika Anda menggunakan GNU grep, Anda akan dapat menggunakan ekspresi reguler seperti Perl jika Anda menggunakan opsi spesifik grepGNU .grep-P
Perhatikan juga bahwa grepmengembalikan garis secara default, bukan substring dari garis. Sekali lagi, dengan GNU grep(dan beberapa grepimplementasi lainnya ), Anda dapat menggunakan -oopsi untuk mendapatkan hanya bit yang cocok dengan ekspresi yang diberikan dari setiap baris.
Perhatikan bahwa kedua -Pdan -onon-standar ekstensi POSIX spesifikasigrep .
Jika Anda tidak menggunakan GNU grep, maka Anda dapat menggunakan sedsebagai gantinya untuk mendapatkan bit antara string prefixdan akhir baris:
sed -n 's/.*prefix\(.*\)/\1/p' file
Apa yang dilakukan adalah hanya mencetak garis yang sedmengatur untuk menerapkan substitusi yang diberikan. Substitusi akan mengganti seluruh baris yang cocok dengan ekspresi (yang merupakan BRE), dengan potongan yang terjadi setelah string prefix.
Perhatikan bahwa jika ada beberapa contoh prefixpada sebuah baris, sedvariasi akan mengembalikan string setelah yang terakhir , sedangkan grepvariasi GNU akan mengembalikan string setelah yang pertama (yang akan mencakup contoh lain dari prefix).
The sedsolusi akan portabel untuk semua sistem Unix-seperti.