Antworten:
Wie beschrieben hier zum Beispiel paßt es zwischen Worten:
Es gibt drei verschiedene Positionen, die als Wortgrenzen gelten:
- Vor dem ersten Zeichen in der Zeichenfolge, wenn das erste Zeichen ein Wortzeichen ist.
- Nach dem letzten Zeichen in der Zeichenfolge, wenn das letzte Zeichen ein Wortzeichen ist.
- Zwischen zwei Zeichen in der Zeichenfolge, wobei eines ein Wortzeichen und das andere kein Wortzeichen ist.
Hier sind Beispiele für jeden dieser Fälle:
Für die Zeichenfolge foobarstimmt der erste Fall überein
foobar
^-----here
Für die Zeichenfolge foobarstimmt der zweite Fall überein
foobar
^--here
Für die Zeichenfolge stimmt foo barder dritte Fall überein
foo bar
^--here, because space is not a word character
Was als Wortzeichen qualifiziert ist, hängt von der spezifischen Implementierung des regulären Ausdrucks ab. In allen Fällen werden jedoch Buchstaben ( [a-z]und [A-Z]), Zahlen ( [0-9]) und _als Wortzeichen betrachtet.
In dem von Ihnen geposteten Beispiel-Regex ( \b[A-Z]+\b) wird also die längste Zeichenfolge gefunden, die sich zwischen zwei Wortgrenzen befindet und nur aus Großbuchstaben besteht. Es könnte einfacher sein, dies anhand eines Beispiels zu erklären:
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(noch /usr/xpg4/bin/egrep) nicht so behandelt \b. Zum Beispiel echo "FOOBAR" | egrep '\b[A-Z]+\b'würde nicht passen.
egrep '\b[A-Z]+\b' filename.sh
Brechen wir es auf:
[A-Z]Stellt ein beliebiges Zeichen in der Zeichenklasse dar
[ABCDEFGHIJKLMNOPQRSTUVWXYZ].[A-Z]+repräsentiert ein oder mehrere Vorkommen von Großbuchstaben. Beispiel Streichhölzer wären: A, HELLO, IS, I, ELEPHANT, usw.'\bINDIA\b': ist genau wie ein GANZES WORT, bei dem nach dem Wort INDIAin Großbuchstaben gesucht wird. Es würde NICHT passen INDIANA. Wenn Sie also dasselbe Prinzip anwenden, werden '\b[A-Z]+\b'ganze Wörter mit einem oder mehreren Großbuchstaben gesucht.egrep '\b[A-Z]+\b' filename.shwürde nach Wörtern mit einem oder mehreren Buchstaben in Großbuchstaben in der Datei gesucht - filename.sh.\b - ist genau wie eine ganze Wortsuche.
[azA-Z0-9_]. Überprüfen Sie das Handbuch aufegrep(1)möglicherweise die Dokumentation der verwendeten regulären Ausdrücke.