Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. Ajusta las columnas y elimina los duplicados en Shell. Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. Ajusta las columnas y elimina los duplicados en Shell.
Archivo de entrada
Failed,2021-12-14 05:47 EST,Respaldo a Demanda,abc,/clientes/FORD_1130PM_EST_Windows2008,Sistema de Archivos de Windows
Completado,2021-12-14 05:47 EST,Respaldo a Demanda,def,/clientes/FORD_1130PM_EST_Windows2008,Sistema de Archivos de Windows
Failed,2021-12-13 19:33 EST,Respaldo Programado,def,/clientes/FORD_730PM_EST_Windows2008,Sistema de Archivos de Windows
Failed,2021-12-14 00:09 EST,Respaldo Programado,abc,/clientes/FORD_1130PM_EST_Windows2008,Sistema de Archivos de Windows
Failed,2021-12-14 00:09 EST,Respaldo Programado,ghi,/clientes/FORD_1130PM_EST_Windows2008,Sistema de Archivos de Windows
Salida esperada
Failed,2021-12-14 00:09 EST,Respaldo Programado,ghi,/clientes/FORD_1130PM_EST_Windows2008,Sistema de Archivos de Windows
Solo quiero aquellos clientes que nunca tuvieron éxito y no haya un respaldo a demanda para ellos.
Código que intenté
awk -F',' '
$1~/Failed/ { fail[$4]=$0 }
$1~/Completed/ {delete fail[$4]}
$3 ~ /Demand/ {delete fail[$4]}
END {for (i in fail) print fail[i]}
' test
davy.ai
El código trata de filtrar la salida necesaria, pero no cumple completamente con los requisitos mencionados en la pregunta.
Para obtener la salida esperada, debemos modificar el código de la siguiente manera:
El código anterior utiliza arrays asociativos para almacenar el número de copias de seguridad fallidas y exitosas para cada cliente. Al final, itera sobre todas las copias de seguridad fallidas y filtra los clientes que cumplen con los requisitos mencionados en la pregunta. La salida también incluye el número de copias de seguridad fallidas y la ruta de la copia de seguridad para cada cliente.