es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    awk -F, '$1=="Failed" && !completed[$2]++ {print}' test1
    

    Este comando utiliza awk para procesar las líneas del archivo de entrada test1. La opción -F establece el separador de campo como coma, para que awk 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 array completed (!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:

    Failed ,ghi  ,/clients/FORD_1030PM_EST_Windows2008, Windows File System
    Failed ,jkl ,/clients/FORD_1030PM_EST_Windows2008 ,Windows File System
    

    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.

Comments are closed.