Analice múltiples archivos json y genere la salida de las coincidencias/hit contra el regex junto con los nombres de archivo asociados.
Actualmente, el comando cat canalizado a jq me ayuda a analizar varios archivos JSON en mi directorio de trabajo y compararlos con el patrón regex que coincide con los identificadores de correo electrónico disponibles en todos los archivos. Sin embargo, estoy interesado en identificar también el nombre del archivo en el que se encuentra/empareja el patrón regex.
Solicito su amable ayuda para ajustar el comando y que imprima $filename. ¡Gracias!
davy.ai
Para imprimir el nombre del archivo junto con las IDs de correo electrónico coincidentes, puede modificar el comando jq de la siguiente manera:
Aquí, estamos utilizando la variable integrada
input_filename
para obtener el nombre de archivo de cada archivo de entrada, y luego dividiéndolo por/
y seleccionando el último elemento para obtener solo el nombre del archivo. Este nombre de archivo se pasa al script jq como un argumento--arg fname
.Luego, estamos modificando la función
map
para agregar el nombre de archivo a las claves de resultado como"\($fname):" + (.|join("."))
. Esto creará claves de resultado en el formatofilename.json.path.to.key
, que incluye el nombre de archivo junto con la ruta original.Finalmente, estamos reduciendo los objetos de resultado como antes usando
reduce
, para que obtengamos un solo objeto JSON con todas las IDs de correo electrónico coincidentes de todos los archivos de entrada, junto con sus respectivos nombres de archivo.