grep . filename.txt
To po prostu zwraca całą zawartość pliku.txt, ponieważ. jest wyrażeniem regularnym, które oznacza dowolny znak. Jak używać grep do wyszukiwania okresów lub innych wyrażeń regularnych, takich jak *?
linux
command-line
bash
grep
MYV
źródło
źródło
grep
polecenie zostało faktycznie przekazane\.
jako parametr, który może następnie interpretować jako dosłowny.
. Jeśli nie masz\
, następniegrep
po prostu dostaje.
jako parametr, który pasuje do dowolnego znaku. Jeśli nie masz cytatów, Twoja powłoka przetworzy\
, i znowugrep
po prostu dostanie.
jako parametr.Odpowiedzi:
grep
domyślnie używa wyrażeń regularnych, dowolny wzorzec podanygrep
przyjmuje się, że jest wyrażeniem regularnym, chyba że używasz-F
przełącznik.Wyrażenia takie jak
*?
nie są częścią Wyrażenie regularne POSIX język, który jest czymgrep
używa domyślnie. Możesz użyć takich konstrukcji, podając inny język wyrażeń regularnych, na przykład Perl:Aby wyszukać wiersz zawierający co najmniej jeden okres, użyj
Dla wiersza zawierającego tylko okresy użyj
Dla bardziej złożonych wyrażeń regularnych użyj
-F
:źródło
Posługiwać się
fgrep
zamiast tego, jeśli chcesz szukać literałów, nie wyrażeń regularnych.Jeśli chcesz po prostu wyłączyć specjalne znaczenie jednego z znaków regularnych za pomocą
grep
, po prostu uciekaj za pomocą odwrotnego ukośnika, zwracając uwagę, że jeśli wpisujesz to w wierszu poleceń, być może będziesz musiał „wymknąć się ucieczkom”, ponieważ twoja powłoka może usunąć jedną warstwę z nich przed przekazaniem ich dziecku.źródło
grep -F
nie rozszerzy wyrażeń regularnych. człowiek grep:Proszę zauważyć
F
i nief
!źródło