Tengo un archivo de registro que me gustaría abrir en Numbers para facilitar la búsqueda. El problema es que el formato no es CSV. Cada línea tiene una docena de campos y los campos están separados por espacios. Sin embargo, algunos de esos campos son cadenas, que contienen espacios, por lo que no puedo simplemente hacer un reemplazo de búsqueda de espacios y poner la coma. Un campo, la fecha, está formateado así: [06/Feb/2018:03:27:37 +0000]
. Este parece ser el único lugar donde se utilizan []s, por lo que podría encontrar/reemplazarlas por "s, pero sigo teniendo problemas para importar el documento. Coloca cada fila en una sola columna.
Así que, para resumir, mi objetivo es tomar un archivo de entrada y romper cada fila para que el espacio es el delimitador, pero ignora los espacios entre comillas.
0 votos
Sustituir los espacios fuera de [] por caracteres de tabulación
0 votos
¿Cómo lo hago sin sustituir también los espacios dentro de []? Es un archivo grande.
1 votos
Si tienes un editor que pueda usar regex (por ejemplo textwrangler o bbedit) o estás dispuesto a usar sed (en este caso recuerda la bandera -E) o escribir un pequeño filtro en cualquier lenguaje que conozcas (por ejemplo perl o Python), puedes primero cambiar los corchetes por "s y luego usar la regex s/\ (?=(?:[^"]*"[^"]*")*[^"]*$)/ \t /g (no es que sea así de bueno con las regexes, está explicado aquí: regex101.com/r/sU3fA2/29 )
0 votos
Sólo por curiosidad, pero el archivo no es campos de longitud fija (pero para el texto de registro), ¿verdad?
0 votos
@GioValerio ¿Te refieres al número de campos por fila? Si es así, parece que son campos de longitud fija, con campos sin datos que tienen un símbolo '-' en su lugar. Nunca he utilizado RegEx pero dang hace parece que se puede obtener de lujo con él. Gracias por el enlace / regex.
0 votos
@GioValerio Genial, he podido escribir un script en Python para sustituir esos espacios por comas. Hizo el análisis de estos archivos wayyy más fácil. Ahora sólo tengo que actualizar este script para manejar un directorio e iterar sobre cada archivo para que no tenga que unirlos, pero para mis propósitos ahora pude encontrar rápida y fácilmente la información que necesitaba de estos registros. Si pones tu comentario en una respuesta lo marcaré como correcto.
0 votos
Sí, las expresiones regulares pueden ser realmente útiles. Pero prefiero dividir un problema en partes que obstinadamente tratar de encontrar una sola regex que lo hace todo