Próbuję zrozumieć różnicę między grep -e
i grep -E
. Teraz grep manpage
otrzymałem:
-E, --extended-regexp
Interpretuj WZÓR jako rozszerzone wyrażenie regularne (patrz poniżej).
-e WZORZEC, --regexp = WZORZEC
Użyj WZORCA jako wzorca; przydatne do ochrony wzorów zaczynających się od -
Powyższe wyjaśnienie nie ma dla mnie sensu.
Czy ktoś może mi to wyjaśnić, używając examples
różnicy między nimi i kiedy użyć której opcji.
PS: Wersja: grep (GNU grep) 2.10
-e
jest tak naprawdę tylko ujednoznacznienie, gdy wyrażenie regularne zaczyna się od myślnika. Togrep ---foo
daje,unrecognized option: ---foo
ale możesz powiedziećgrep -e ---foo
grep dla wyrażenia regularnego---foo
.Odpowiedzi:
-e
jest ściśle flagą wskazującą wzór, który chcesz dopasować.-E
kontroluje, czy musisz uciec od niektórych znaków specjalnych.man grep
wyjaśnia-E
to trochę więcej:źródło
echo "hello" | grep -o -e 'h|l'
otrzymuję żadnych danych wyjściowych, ponieważ|
straciłem swoje specjalne znaczenie, a kiedy to robięecho "hello" | grep -o -E 'h|l'
, otrzymuję pożądany wynik.echo "hello" | grep -o -e 'h' -e 'l'
zadziała, jeśli-E
w tym przypadku chcesz wyrzucić .grep -e -o 'h|l'
będzie pasować dosłownie,h|l
dopókigrep -e -o 'h\|l'
będzie pasowaćh
lubl
z -E jest odwrotniegrep -e
Pozwala również na użycie kilku ciągów wyszukiwania:'grep -e 'abc' -e 'def' -e '123'
poszuka wszystkich trzech ciągów:abc
orazdef
oraz123
.Działa to dość podobnie do
grep 'abc\|def\|123'
gdzie\|
stoi zaor
, ale może być nieco jaśniejsze czytać.Ponieważ najważniejsze fakty
grep -E
są już tutaj wyjaśnione, chcę tylko dodać to, co podsumowałem na ten temat, w dość podobnym pytaniu: Wyrażenie regularne do znajdowania podwójnych znaków w Bashźródło
/rozszerzony
Więc jeszcze raz.
źródło
(
,)
,|
itp trzeba być odwrotny ukośnik-uciekł mają swoje szczególne znaczenie w podstawowej regexp, ale nie w rozszerzony (gdzie muszą być uciekł należy traktować jako ciągiem znaków)Aby rozwinąć tę
-e
opcję.-e
jest często opcjonalne:jest identyczny z
chyba że, jak stwierdzono we wcześniejszej odpowiedzi i na stronach podręcznika, istnieje wiele wzorców wyszukiwania lub w celu ochrony wzorca rozpoczynającego się od łącznika (-).
źródło