Je veux faire une recherche regex simple récursivement à travers un répertoire qui n'est pas limité à des lignes simples.
J'ai essayé grep et ack, mais aucun ne semble le supporter.
Je sais que cela ne devrait pas être trop coûteux en calcul (dans mon cas) car mon éditeur de texte de choix ( Sublime Text ) peut le faire très bien.
Je cherche juste une version en ligne de commande simple de ceci. Google a rendu pcregrep , mais je n'arrive pas à trouver cela pour Mac. Suis-je tout simplement pas au bon endroit?
grep
que le contexte vous aide à trouver ce que vous voulez (-C1
)?Réponses:
Installez Homebrew puis:
Cela vous donnera la dernière
pcregrep
la source
Vous n'avez pas dit exactement ce que vous recherchez, alors j'imagine la tâche pour savoir si le fichier contient 112 suivi de 223, sans tenir compte des nouvelles lignes.
Une
awk
solution légèrement artificielle :La
RS
variable contient le séparateur d'enregistrement. En le définissant sur la chaîne vide, le fichier entier sera lu comme un enregistrement.Cela sera probablement très inefficace en mémoire sur les gros fichiers.
Soit dit en passant, je fais cela sur OpenBSD, mais le awk OS X devrait fonctionner de la même manière.
la source
v
etRS
. soitawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
"pcregrep" peut désigner une ancienne écurie
pcregrep
et une plus récentepcre2grep
. Les deux sont fournis par le projet PCRE àpcre.org
l' adresse .Mac Ports fournit le premier comme partie du port
pcre
(stable à la version 8.40) et le second comme partie du portpcre2
(actuellement la version 10.22). Installer via:la source