sed '/\n/P;//!s/_\.[^ ("]*Text([^)]*)/\n&\n/;D' files... >results.txt
... probablemente funcionaría. Ejecute en sus datos de ejemplo que imprime:
_.Text("Hello World!")
_.Text("Foo")
_.ActionText("Bar")
Todo lo que hace es intentar encerrar la primera coincidencia en una línea en \newlines. Si tiene éxito o no, Delige hasta la primera línea de \newline 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 \new coincide con el espacio del patrón, lo que solo puede suceder si se encontró una coincidencia y luego se Deligió, entonces sedimprime solo hasta la primera línea \new en el espacio del patrón, que se encuentra en la cola de la cadena coincidente. La s///sustitución !no se intenta cuando ya hay una línea \nelectrónica en el espacio del patrón, por lo queDEl comando elete borra la coincidencia ya impresa y el ciclo comienza nuevamente desde la cola de la última coincidencia.
Sin embargo, dependiendo de tu, sedes posible que necesites usar una línea \nelectrónica literal en lugar del ncampo 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 ...
find /path -name pattern -exec sed script_above {} + >>results.txt
... porque sedtratará todos los archivos de entrada como una sola secuencia.
grepapoyos-o, ese sería el mejor candidato.