Szukam narzędzia typu grep do wyszukiwania czysto dosłownych łańcuchów. Szukam wystąpienia wiersza pliku dziennika, jako części wiersza w oddzielnym pliku dziennika. Wyszukiwany tekst może zawierać wszelkiego rodzaju znaki specjalne wyrażeń regularnych, np []().*^$-\
..
Czy istnieje narzędzie do wyszukiwania systemu Unix, które nie używa wyrażeń regularnych, a jedynie szuka dosłownych wystąpień ciągu?
grep
wyszukiwać dosłowne ciągi znaków?” zamiast „Czy istnieje coś takiego,grep
które może wyszukiwać dosłowne ciągi znaków?” Wkrętaki z płaskim łbem pasują do śrub Philipsa, wiesz;)
Odpowiedzi:
Możesz do tego użyć grep z opcją -F.
źródło
-e
opcji. Tak:grep -F -e "fixed1" -e "fixed2" -e "fixed3" -e "fixed4"
. Nie są wymagane nowe linie;)fgrep
jest używany.grep --include=\*.php -FRn -e "$$"
zwróciło żadnego wyniku: Korzystanie z pojedynczych zapytań dało mi pożądany wynik:grep --include=\*.php -FRn -e '$$'
$
a kilka innych znaków jest specjalnych i zostaną one zastąpione przez bash po naciśnięciu klawisza enter i przedgrep
(lub jakimkolwiek innym poleceniem) wykonaniem. Możesz powiedzieć bashowi, aby pozostawił wszystkie znaki (z wyjątkiem pojedynczego cudzysłowu) nietknięte, umieszczając je w pojedynczych cudzysłowach. Jeśli chcesz wpisać pojedynczy cytat, zrób to w ten sposób'I'\''m special'
To jest albo
fgrep
albogrep -F
który nie będzie robił wyrażeń regularnych.fgrep
jest identyczny,grep -F
ale wolę nie martwić się o argumenty, będąc z natury leniwy :-)źródło
egrep
ifgrep
nie są określone w standardzie POSIX;grep -F
igrep -E
sąPrzejdź
-F
dogrep
.źródło
możesz też użyć awk, ponieważ ma on możliwość znalezienia stałego łańcucha, a także możliwości programowania, np. tylko
źródło
wynik
źródło