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.

Trabajando con datos en campos entre comillas con GNU AWK

Mis disculpas si esto ya se ha preguntado antes. He buscado pero no he encontrado una respuesta satisfactoria.

Tengo este archivo de muestra, test.csv:

"abc","def,apple","2019-10-10"

Me gustaría mostrar cualquier campo basado en la fecha en el último campo. He intentado esto:

gawk -vFPAT='[^,]*|"[^"]*"' '($3 >= "2018-10-10") {print $1}' test.csv

pero la salida está vacía.

Si elimino las comillas alrededor de la fecha en test.csv, lo anterior funciona. El comando muestra “abc”. Tengo un archivo largo que sigue el patrón anterior y estoy seguro de que puedo usar una expresión regular sencilla para eliminar las comillas alrededor de las fechas, pero ¿hay alguna manera de evitar esto cambiando el comando gawk anterior?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, puedo sugerir que el problema parece estar con el patrón FPAT que no captura correctamente los campos entre comillas. Dado que el campo de fecha está entre comillas, el patrón actual trata todo el campo entre comillas como un único campo, lo cual provoca que la comparación falle.

    Una posible solución es modificar el patrón FPAT para manejar los campos entre comillas agregando un patrón opcional que coincida con los campos entre comillas con comas:

    gawk -vFPAT='([^",]+)|("[^"]+")|("[^",]*,[^"]*")' '$3 >= "2018-10-10" {print $1}' test.csv

    Este patrón debería capturar correctamente los campos entre comillas y comas, lo que permitirá que la comparación funcione como se espera.

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

Comments are closed.