Dokumentasi Accor untuk GNU:
‘\<’ Match the empty string at the beginning of word.
‘\>’ Match the empty string at the end of word.
/ Etc / fstab saya terlihat seperti ini:
/dev/sdb1 /media/fresh ext2 defaults 0 0
Saya ingin grep mengembalikan TRUE / FALSE untuk keberadaan / media / fresh. Saya mencoba menggunakan \<
dan \>
tetapi tidak berhasil. Mengapa?
egrep '\</media/fresh\>' /etc/fstab
Penanganan masalah:
egrep '[[:blank:]]/media/fresh[[:blank:]]' /etc/fstab
Tapi itu terlihat lebih jelek.
Grep saya 2.5.1
grep
regular-expression
Felipe Alvarez
sumber
sumber
/
tidak dianggap sebagai karakter kata, jadi regex tidak akan cocok - "\ b cocok sebelum dan setelah urutan alfanumerik" lebih tepat daripada mengatakan "sebelum dan sesudah kata"Jawaban:
\<
dan\>
mencocokkan string kosong di awal dan akhir kata masing-masing dan hanya karakter penyusun kata yang:Dari
man grep
:Jadi, Regex Anda gagal karena
/
bukan karakter konstituen kata yang valid.Alih-alih karena Anda memiliki ruang di sekitar, Anda dapat menggunakan
-w
opsigrep
untuk mencocokkan kata:Contoh:
sumber
Masalah dengan
\<
(dan juga\b
) ini berlaku tidak hanya untuk/
, tetapi untuk semua karakter non-kata. (yaitu karakter selain[[:alnum:]]
dan_
.)Masalahnya adalah bahwa mesin regex akan selalu memotong karakter non-kata seperti
/
saat mencari jangkar berikutnya\<
. Itu sebabnya Anda tidak harus menempatkan karakter non-kata seperti/
setelahnya\<
. Jika Anda melakukannya, dengan konstruksi, tidak ada yang cocok.Alternatif untuk
-w
opsi grep, akan menjadi sesuatu seperti ini:sumber