Eliminar respuestas en correos electrónicos descargados (es decir, oraciones duplicadas no consecutivas del archivo txt)


0

¡Hola, expertos y compañeros de aprendizaje!

Tengo docenas de archivos de texto que contienen archivos mensuales de un servidor de listas. Estoy tratando de eliminar / eliminar las respuestas citadas para que cada mensaje solo aparezca una vez en todos los archivos. La mayoría de los usuarios de la lista no usan comillas en línea, ¡eso es útil! Tengo la ID del mensaje, en respuesta a, y toda la información del encabezado, pero sé que esta es una tarea difícil.

Lo complicado es el hecho de que muchos clientes de correo electrónico se utilizan con todos sus diferentes sistemas para tratar las respuestas. Entonces, a veces los correos electrónicos citados vienen con ">" al comienzo de la línea (que ya aprendí a eliminar), algunos saltos de inserción de párrafo (¿aparentemente al azar?), Algunos usan "--- Mensaje original ---" o " PersonZ escribió / escribe: "y, por supuesto, no hay un" final "estándar para marcar el final de la respuesta.

He estado buscando una solución regex y probando posibilidades durante días, y no he encontrado nada que funcione sin ordenar las líneas (es decir, todas las soluciones requieren duplicados consecutivos). Aquí hay un ejemplo de una solución muy cercana que implica hacer que todo sea una nueva línea y clasificarlos, pero clasificarlos anula el propósito del proyecto (análisis semántico).

Encuentra frases duplicadas: cualquier herramienta o expresión regular

Aquí hay otra solución que también está cerca, pero requiere buscar desde el principio de una línea. No funciona en mi situación porque varios clientes de correo electrónico que insertan saltos de párrafo en el medio de las oraciones.

https://stackoverflow.com/questions/32660532/remove-delete-all-duplicate-lines

Estoy en un entorno de escritorio Win10 x64. Soy algo nuevo en expresiones regulares. He estado usando FNR simple (Buscar y reemplazar desde codeplex, GrepWin y TextCrawler Free), y estoy abierto a otras soluciones (o métodos) de software. Si es necesario, puedo descubrir cómo ejecutar comandos php usando xammp. En otras palabras, todo el proceso ha sido una experiencia de aprendizaje, así que estoy feliz de continuar.

EDITAR: si desea ver un ejemplo simulado, con una expresión regular simulada que sé que no funciona y no esperaba que funcione, mire aquí: https://regex101.com/r/FmAMH5/1

Perdón por la longitud, pero quería proporcionar la información necesaria de inmediato.

Gracias Jeremy


1
Para alguien como yo que está familiarizado con Regex pero no es un experto, necesitaría entender mejor (o ver algunos ejemplos mejores) de lo que comienza con el contenido del archivo de "texto" y qué le gustaría que aparecieran los resultados esperados. . Por lo tanto, eso significa incluir más de un ejemplo de "antes" y esperado "después", ya que tiene casos que complican aún más las cosas, entonces que así sea ... Podría ayudarlo o darle alguna sugerencia de punto de partida si esta parte fueron más claros para mí.
Pimp Juice IT

@ Spittin'IT Gracias por la solicitud. El archivo varía increíblemente, por eso intenté dar un resumen narrativo. Lancé un ejemplo muy, muy rápido en mi edición en regex101 con una expresión regular que sé que no funciona (y eso no pretende ser una solución). Solo quiero identificar las cadenas de texto repetidas para poder eliminarlas; cómo conceptualizamos eso (ya sea a través de la información del encabezado o pensando en estas oraciones como cadenas repetitivas no consecutivas) depende de lo que sea posible. Puedo eliminar los encabezados y las firmas de correo electrónico sin problemas. Ahora me preocupan las respuestas citadas / el contenido repetido.
Jeremy

No creo que regex sea la herramienta adecuada para el trabajo aquí. Suena como algo AWK (en combinación con algunas expresiones regulares, utilizado dentro de AWK) sería bueno. Aún así, no es un problema simple, y la solución no será una sola línea ...
Wouter

@Wouter Estaba mirando awk hace unos días, pero aún no he resuelto una solución. Y tienes razón, no esperaría una frase. Ciertamente entiendo la complejidad de mi pregunta y hasta ahora he dedicado alrededor de 10 horas a tratar de resolverlo. Aún así, tengo esperanzas.
Jeremy

@ McDonald's ¿Ayudó mi ejemplo o simplemente nubló el problema? En cualquier caso, gracias.
Jeremy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.