Mam pytanie dotyczące grep
i egrep
w unix
.Różnica między egrep i grep
Jak ostatnio studiowałem shell commands
w unix
, chcę wiedzieć, jakie są różnice między grep i egrep.
Uważam, że możemy używać grep i egrep z wyrażeniem regularnym. Jednak znalazłem coś innego między tymi dwiema komendami:
Dla ^
, grep i egrep mają to samo znaczenie, co oznacza, że wiersze zawierają podaną treść na samym początku.
Jednak dla |
, grep, bez tylnej ukośnik przed |
oznacza charakter |
, a jeśli mogę umieścić odwrotnego ukośnika przed nim, jak się okazuje na niej szczególne znaczenie znalezienia wiersz zawiera albo rzeczy przed nim i za nim. ALE, dla egrep, jest odwrotnie. |
ma ostatnie znaczenie grep i \|
ma dawne znaczenie grep, gdy go używa.
Czy ktoś inny może wyjaśnić, dlaczego?
Witaj rook, dziękuję bardzo. Jest bardzo jasne. Naprawdę to doceniam. –
Niezłe wyjaśnienie. Mogę tylko dodać, że podstawowe wyrażenia regularne * nie * rozpoznają meta-symbole, takie jak "+", "?", "|", Itp., Ale musisz je uciec (prefiks "\"), aby je włączyć (mając na uwadze, że z rozszerzonymi wyrażeniami regularnymi, musisz uciec z nich, aby je wyłączyć.) Tak więc "grep -E" a | b "" jest tym samym, co "grep" a \ | b '"(pasuje do a lub b), oraz" grep -E 'a \ | b' "jest tym samym, co" grep "a | b '" (dopasowuje tylko ciąg' a | b ') –
W 'egrep','? ',' + '' {'' | '' '(' ')' są symbolami wyrażenia regularnego. – Hunger