Was bedeutet \ b in einem Grep-Muster?


12

Was macht dieser Befehl?

grep "\bi\b" linux.txt

Wonach sucht es?


Es mag offensichtlich sein, aber für den Fall, dass dies nicht der Fall ist, hier ein Hinweis auf den (signifikanten) Unterschied zwischen \<...\>und \b...\b: `Sie können unerwartete Ergebnisse erzielen, wenn Sie davon ausgehen, dass sich die beiden Muster gleich verhalten ... siehe diesen Link
Peter. O

Antworten:


13

\b in einem regulären Ausdruck bedeutet "Wortgrenze".

Mit diesem Befehl suchen Sie nach allen Wörtern iin der Datei linux.txt. ikann am Anfang einer Zeile oder am Ende oder zwischen zwei Leerzeichen in einem Satz stehen.


kann am anfang oder am ende stehen ?? soll nicht nur zwischen Leerzeichen sein ??
Amyassin

1
Mehr Details dazu finde ich nicht. Wenn Sie jedoch eine Datei mit den Zeilen "i foo" und "bar i" von Hand versuchen, stimmt der reguläre Ausdruck für den obigen Befehl grep mit beiden überein.
uloBasEI

1
Genauer gesagt, nicht nur Leerzeichen , sondern alle Zeichen , die keine Wörter sind . Genau wie der -w --word-regexpSchalter funktioniert: grep -w "i" linux.txt. Zum Beispiel stimmt auch eine Zeile wie "<i> kursiv </ i>" überein.
Manatwork

0

Der \b(Wortgrenzen-) Anker kann anstelle von \<und verwendet werden \>, um den Anfang oder das Ende eines Wortes zu kennzeichnen.

Wenn dies der Inhalt eines ist file:

Hi
this
is test file
to carry out few regular expressions

Dann:

$ grep -e '\ breg' Datei
wenige durchzuführen reg ular Ausdrücke
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.