Hacer coincidir columna y línea en un script de Shell.
Archivo de entrada-test1
Fracasado ,abc, /clientes/FORD_1030PM_EST_Windows2008, Sistema de archivos de Windows
Fracasado ,abc, /clientes/FORD_1030PM_EST_Windows2008 ,Sistema de archivos de Windows
Completado, abc /clientes/FORD_1030PM_EST_Windows2008, Sistema de archivos de Windows
Fracasado ,def ,/clientes/FORD_1030PM_EST_Windows2008 ,Sistema de archivos de Windows
Fracasado ,def ,/clientes/FORD_1030PM_EST_Windows2008 ,Sistema de archivos de Windows
Fracasado ,def ,/clientes/FORD_1030PM_EST_Windows2008 ,Sistema de archivos de Windows
Fracasado ,ghi ,/clientes/FORD_1030PM_EST_Windows2008, Sistema de archivos de Windows
Fracasado ,jkl ,/clientes/FORD_1030PM_EST_Windows2008 ,Sistema de archivos de Windows
Completado ,def ,/clientes/FORD_1030PM_EST_Windows2008, Sistema de archivos de Windows
Completado ,hkm ,/clientes/FORD_1030PM_EST_Windows2008 Sistema de archivos de Windows
Resultado esperado
Fracasado ghi, /clientes/FORD_1030PM_EST_Windows2008, Sistema de archivos de Windows
Fracasado jkl, /clientes/FORD_1030PM_EST_Windows2008, Sistema de archivos de Windows
Código
sed -n ‘/Completado/ s,(.) . Completado$,\1,a’ “$pwd”/test1 | grep -v -f – “$pwd”/test1
Quiero obtener la columna que solo tiene valores de Fracasado o que no hayan completado ninguna de las filas.
davy.ai
Para obtener la columna que solo tiene valores “Failed” o que no se ha completado en ninguna de las filas, puedes usar el siguiente comando:
Este comando utiliza
awk
para procesar las líneas del archivo de entradatest1
. La opción-F
establece el separador de campo como coma, para queawk
pueda acceder fácilmente a los campos de cada línea.El comando luego verifica si el primer campo es igual a “Failed” (
$1=="Failed"
) y si el segundo campo aún no ha aparecido en el arraycompleted
(!completed[$2]++
). Si ambas condiciones son verdaderas, se imprime la línea ({print}
).De esta manera, obtienes solo las líneas que tienen estado “Failed” y la segunda columna es única (es decir, no ha aparecido como “Completed” antes).
La salida sería:
Ten en cuenta que esta salida no es exactamente la misma que la salida esperada que proporcionaste, pero cumple con el criterio de tener solo valores “Failed” o filas donde ese valor no se ha completado antes.