Ich habe dies viel recherchiert, bin mir aber immer noch nicht sicher. Was bedeutet Wortgrenze ? Was tut es?
Könnte mir zum Beispiel jemand diesen Befehl erklären?
egrep '\b[A-Z]+\b' filename.sh
grep
regular-expression
user36683
quelle
quelle
[azA-Z0-9_]
. Überprüfen Sie das Handbuch aufegrep(1)
möglicherweise die Dokumentation der verwendeten regulären Ausdrücke.Antworten:
Wie beschrieben hier zum Beispiel paßt es zwischen Worten:
Hier sind Beispiele für jeden dieser Fälle:
Für die Zeichenfolge
foobar
stimmt der erste Fall übereinFür die Zeichenfolge
foobar
stimmt der zweite Fall übereinFür die Zeichenfolge stimmt
foo bar
der dritte Fall übereinWas 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:quelle
egrep
(noch/usr/xpg4/bin/egrep
) nicht so behandelt\b
. Zum Beispielecho "FOOBAR" | egrep '\b[A-Z]+\b'
würde nicht passen.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 WortINDIA
in Großbuchstaben gesucht wird. Es würde NICHT passenINDIANA
. 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.sh
wü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.quelle