Ich möchte eine einfache Regex-Suche rekursiv durch ein Verzeichnis durchführen, das nicht auf einzelne Zeilen beschränkt ist.
Ich habe es mit grep und ack versucht, aber keiner scheint dies zu unterstützen.
Ich weiß, dass es (in meinem Fall) nicht zu rechenintensiv sein sollte, da mein bevorzugter Texteditor ( Sublime Text ) dies problemlos kann.
Ich suche nur nach einer einfachen Kommandozeilenversion davon. Google hat pcregrep aufgetaucht , aber ich kann das für Mac nicht finden. Bin ich einfach nicht am richtigen Ort?
grep
hilft Ihnen der Kontext dabei, das zu finden, was Sie wollen (-C1
)?Antworten:
Installieren Sie Homebrew und dann:
Dies gibt Ihnen die neuesten
pcregrep
quelle
Sie haben nicht genau gesagt, wonach Sie suchen, also stelle ich mir die Aufgabe vor, herauszufinden, ob die Datei 112 gefolgt von 223 enthält, ohne Rücksicht auf Zeilenumbrüche.
Eine leicht erfundene
awk
Lösung:Die
RS
Variable enthält das Datensatztrennzeichen. Wenn Sie die leere Zeichenfolge festlegen, wird die gesamte Datei als ein Datensatz gelesen.Dies wird bei großen Dateien wahrscheinlich sehr speichereffizient sein.
Übrigens mache ich das unter OpenBSD, aber das OS X awk sollte genauso funktionieren.
quelle
v
undRS
. dhawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
"pcregrep" kann sich auf einen älteren
pcregrep
und einen neueren Stall beziehenpcre2grep
. Beide werden vom PCRE-Projekt unterpcre.org
bereitgestellt .Mac Ports bietet den ersteren als Teil des Ports
pcre
(stabil in Version 8.40) und den letzteren als Teil des Portspcre2
(derzeit Version 10.22). Installation über:quelle