Saya sudah banyak meneliti ini, tetapi saya masih belum jelas. Apa arti batas kata ? Apa fungsinya?
Jadi, misalnya, bisakah seseorang menjelaskan perintah ini kepada saya?
egrep '\b[A-Z]+\b' filename.sh
grep
regular-expression
pengguna36683
sumber
sumber
[azA-Z0-9_]
. Periksa manual untukegrep(1)
, mungkin doumentation untuk ekspresi reguler yang digunakan.Jawaban:
Seperti dijelaskan di sini , misalnya, itu cocok dengan kata - kata:
Berikut adalah contoh dari masing-masing kasus tersebut:
Untuk string
foobar
, case pertama cocokUntuk string
foobar
, case kedua cocokUntuk string
foo bar
, case ketiga akan cocokApa yang memenuhi syarat sebagai karakter kata tergantung pada implementasi ekspresi reguler spesifik. Namun dalam semua kasus, huruf (
[a-z]
dan[A-Z]
), angka ([0-9]
) dan_
dianggap sebagai karakter kata.Jadi, contoh regex yang Anda posting (
\b[A-Z]+\b
) berarti menemukan string terpanjang di antara dua batas kata dan yang hanya terdiri dari huruf besar. Mungkin lebih mudah untuk dijelaskan dengan contoh:sumber
egrep
(atau/usr/xpg4/bin/egrep
) tidak memperlakukan\b
cara ini. Misalnya,echo "FOOBAR" | egrep '\b[A-Z]+\b'
tidak akan cocok.Mari kita hancurkan:
[A-Z]
mewakili salah satu karakter di kelas karakter[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
.[A-Z]+
mewakili satu atau lebih kemunculan karakter huruf besar. Misalnya pertandingan akan menjadi:A
,HELLO
,IS
,I
,ELEPHANT
, dll'\bINDIA\b'
: persis seperti pencarian KATA SELURUH untuk kataINDIA
dalam huruf besar. TIDAK akan cocokINDIANA
. Dengan demikian menerapkan prinsip yang sama -'\b[A-Z]+\b'
akan mencari seluruh kata memiliki satu atau lebih huruf dalam huruf besar.egrep '\b[A-Z]+\b' filename.sh
akan mencari kata-kata yang memiliki satu atau lebih huruf semua huruf besar dalam file -filename.sh
.\b
- Persis seperti seluruh pencarian kata.sumber