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.

grep en archivo CSV

Probablemente ya se haya escrito mucho sobre esto, pero estoy luchando por entender cómo funciona la estructura en grep para lanzar una consulta en un archivo csv.

El archivo en el que estoy trabajando tiene la siguiente estructura:

Field1, field2, field3, field4, field5
numérico, letra, numérico, caracteres, caracteres

12,F,27,finlandés,inglés sueco francés español
16,F,29,finlandés,inglés sueco francés español estonio
30,F,19,finlandés,inglés sueco francés español

Básicamente, estoy luchando por definir una condición específica para cada campo dentro del archivo CSV.

A continuación, la expresión que se me ocurrió:

grep -E "[1-9][[:digit:]][^,]\,F[^,]\,[23][^,]\,finlandés[^,]\,español.francés | francés.español

Y aquí está la búsqueda que necesito implementar en grep:

Primer campo -> números por encima de 10
Segundo campo -> letra que coincide con F
Tercer campo -> números dentro de un rango
Cuarto campo -> cadena de caracteres
Quinto campo -> cadena de caracteres

Mi paciencia está llegando al límite… 🙂

Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hola,

    Parece que estás teniendo dificultades para definir condiciones específicas para cada campo en un archivo CSV usando grep. Aquí te dejo algunas instrucciones para ayudarte.

    Para buscar condiciones específicas para cada campo en un archivo CSV, puedes usar el siguiente comando:

    grep -E '^[1-9][0-9],F,[2-3][0-9],finnish,.* spanish|.*french.*spanish$' archivo.csv
    

    Este comando buscará líneas en el archivo CSV que cumplan con los siguientes criterios:

    • Primer campo: números mayores a 10 (es decir, cualquier número que empiece con un dígito entre 1-9 seguido de cualquier otro dígito)
    • Segundo campo: letra que coincida con F (es decir, la letra F)
    • Tercer campo: números dentro de un rango (es decir, cualquier número entre 20-39)
    • Cuarto campo: cadena de caracteres (es decir, la palabra “finnish”)
    • Quinto campo: cadena de caracteres (es decir, cualquier caracteres seguidos de la palabra “spanish” o las palabras “french” y “spanish” en cualquier orden)

    Ten en cuenta que en el comando, el carácter ‘^’ coincide con el inicio de una línea, y el carácter ‘$’ coincide con el fin de una línea. Además, el carácter ‘|’ separa dos patrones alternativos (es decir, uno u otro patrón deben coincidir).

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.