Ich bin auf der Suche nach einem Grep-Tool, um nach rein wörtlichen Zeichenfolgen zu suchen. Ich suche nach dem Auftreten einer Zeile einer Protokolldatei als Teil einer Zeile in einer separaten Protokolldatei. Der Suchtext kann alle Arten von Regex-Sonderzeichen enthalten, z []().*^$-\
.
Gibt es ein Unix-Suchdienstprogramm, das keinen regulären Ausdruck verwendet, sondern nur nach wörtlichen Vorkommen einer Zeichenfolge sucht?
grep
warum die Frage nicht "Kann ich nach wörtlichen Zeichenfolgen suchen?" War. statt "Gibt es so etwasgrep
, das nach wörtlichen Zeichenfolgen suchen kann?" Flachkopfschraubendreher passen auf Philips Schraubköpfe, wissen Sie;)
Antworten:
Sie können dafür grep mit der Option -F verwenden.
quelle
-e
Option bereitstellen . So :grep -F -e "fixed1" -e "fixed2" -e "fixed3" -e "fixed4"
. Keine Zeilenumbrüche erforderlich;)fgrep
wird verwendet.grep --include=\*.php -FRn -e "$$"
Verwendung einzelner Quoutes ergab das gewünschte Ergebnis:grep --include=\*.php -FRn -e '$$'
$
und einige andere Zeichen sind etwas Besonderes und werden durch Bash ersetzt, nachdem Sie die Eingabetaste gedrückt haben und bevorgrep
(oder welcher Befehl auch immer) ausgeführt wird. Sie können bash anweisen, alle Zeichen (außer einem einfachen Anführungszeichen) unberührt zu lassen, indem Sie sie in einfache Anführungszeichen setzen. Wenn Sie einen Apostroph eingeben müssen tun es wie folgt'I'\''m special'
Das ist entweder
fgrep
odergrep -F
was keine regulären Ausdrücke macht.fgrep
ist identisch mit,grep -F
aber ich ziehe es vor , mich nicht um die Argumente kümmern zu müssen , da ich an sich faul bin :-)quelle
egrep
undfgrep
sind nicht durch den POSIX-Standard spezifiziert;grep -F
undgrep -E
sindWeitergeben
-F
angrep
.quelle
Sie können auch awk verwenden, da es die Möglichkeit hat, feste Zeichenfolgen zu finden, sowie Programmierfunktionen, z. B. nur
quelle
Ausgabe
quelle