Tengo miles de archivos fuente y me gustaría encontrar todo el texto que coincida con una expresión regular y luego mostrar cada coincidencia en su propia línea en un archivo de texto resultante.
Por ejemplo;
// a.cs
string test = _.Text("Hello World!") + _.Text("Foo");
// b.cs
Debug.Log(_.ActionText("Bar"));
// results.txt
_.Text("Hello World")
_.Text("Foo")
_.ActionText("Bar")
¿Qué comando sería capaz de lograr esto? ¿podría por favor mostrar un ejemplo?
bash
regular-expression
search
Lea Hayes
fuente
fuente
grep
apoyos-o
, ese sería el mejor candidato.Respuestas:
... probablemente funcionaría. Ejecute en sus datos de ejemplo que imprime:
Todo lo que hace es intentar encerrar la primera coincidencia en una línea en
\n
ewlines. Si tiene éxito o no,D
elige hasta la primera línea de\n
ewline en el espacio del patrón, lo que para una línea que no coincide lo elimina por completo de la salida, pero para una coincidencia se elimina solo hasta la cabeza de su patrón y el script comienza de nuevo desde la parte superior . Si una línea\n
ew coincide con el espacio del patrón, lo que solo puede suceder si se encontró una coincidencia y luego seD
eligió, entoncessed
imprime solo hasta la primera línea\n
ew en el espacio del patrón, que se encuentra en la cola de la cadena coincidente. Las///
sustitución!
no se intenta cuando ya hay una línea\n
electrónica en el espacio del patrón, por lo queD
El comando elete borra la coincidencia ya impresa y el ciclo comienza nuevamente desde la cola de la última coincidencia.Sin embargo, dependiendo de tu,
sed
es posible que necesites usar una línea\n
electrónica literal en lugar deln
campo de sustitución del lado derecho. Pero debería poder hacer todos los argumentos del archivo a la vez, o, al menos, muchos a la vez (dependiendo de los límites de ARGMAX) . Puede simplemente bombardear esos, o tal vez hacer ...... porque
sed
tratará todos los archivos de entrada como una sola secuencia.fuente
find
enfoque y funcionó perfectamente; ¡Gracias!Puedes usar grep.
fuente