Yanıtlar:
Açıklandığı gibi burada , örneğin, maçları arasındaki kelimeler:
Kelime sınırları olarak nitelendirilen üç farklı pozisyon vardır:
- Dizedeki ilk karakterden önce, ilk karakter bir kelime karakteriyse.
- Dizedeki son karakterden sonra, son karakter bir kelime karakteriyse.
- Dizede, biri sözcük karakteri diğeri de sözcük karakteri olmayan iki karakter arasında.
İşte bu vakaların her birine örnekler:
Dize foobar
için ilk durum eşleşir
foobar
^-----here
Dize foobar
için ikinci durum eşleşir
foobar
^--here
Dize foo bar
için üçüncü durum eşleşir
foo bar
^--here, because space is not a word character
Bir kelime karakteri olarak nitelendirilen şey, belirli düzenli ifade uygulamasına bağlıdır. Ancak her durumda, harfler ( [a-z]
ve [A-Z]
), sayılar ( [0-9]
) ve _
kelime karakterleri olarak kabul edilir.
Bu nedenle, ( \b[A-Z]+\b
) gönderdiğin normal ifade, iki sözcük sınırı arasındaki ve yalnızca büyük harflerden oluşan en uzun dizeyi bulmak anlamına gelir. Örnekle açıklamak daha kolay olabilir:
echo "FOOBAR" | egrep '\b[A-Z]+\b' # Works
echo "FOO BAR" | egrep '\b[A-Z]+\b' # Works
echo "aFOOBARb" | egrep '\b[A-Z]+\b' # Does not work, we want capitals only
echo "12345" | egrep '\b[A-Za]+\b' # Does not work, no letters
echo "1FOOBAR2" | egrep '\b[A-Z]+\b' # Does not work, 1 and 2 are word chars
echo "_FOOBAR_" | egrep '\b[A-Z]+\b' # Does not work, _ is a word char
echo "#FOOBAR$" | egrep '\b[A-Z]+\b' # Works, # and $ are not word chars
egrep
(ne de /usr/xpg4/bin/egrep
) \b
bu şekilde davranmadığını unutmayın . Örneğin, echo "FOOBAR" | egrep '\b[A-Z]+\b'
eşleşmez.
egrep '\b[A-Z]+\b' filename.sh
Bırakalım:
[A-Z]
karakter sınıfındaki herhangi bir karakteri temsil eder
[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
.[A-Z]+
"Büyük harf", büyük harfli karakterlerin bir veya daha fazla oluşumunu temsil eder. : Örnek maçlar olacağını A
, HELLO
, IS
, I
, ELEPHANT
, vb'\bINDIA\b'
: tam olarak kelimeyi BÜTÜN SÖZCÜK araması gibidir INDIA
. Bu olur DEĞİL maç INDIANA
. Böylece aynı prensibi uygulamak - '\b[A-Z]+\b'
büyük harfle bir veya daha fazla harf içeren tüm kelimeleri arar.egrep '\b[A-Z]+\b' filename.sh
, dosyada büyük harf olan bir veya daha fazla harfe sahip kelimeleri arar filename.sh
.\b
- tam bir kelime araması gibidir.
[azA-Z0-9_]
.egrep(1)
Kullanımdaki düzenli ifadelerin kılavuzuna , belki de belgelerine bakın.