script para comparar lineas de un documento
Hola a todos, tengo un pequeño reto de programación, peor para mí ya que no soy programador profesional, pero me gustaría añadir una característica a un pequeño paquete de software de código abierto que estoy creando y no tengo muy claro como hacerlo.
No pretendo que me hagáis el trabajo, pero tampoco quiero redescubrir la rueda, estoy seguro que muchos de vosotros me dais 100 vueltas en programacion y me gustaŕia saber vuestra opinión.
Mi objetivo es llegar a un guión (en bash o perl) que
1- tome uno o varios archivos de texto
2- tome cada linea de los archivos de manera independiente y contraste los primeros caracteres de cada línea con los de todas las demás líneas
2 -si encuentra duplicados anote cuantas veces aparecen y salga con una respuesta numerica en vez de un simple true false
3- recuerde la cadena de caracteres y les asigne una variable para que con una estructura tipo if else pueda variar el comportamiento del guión
Es decir, comparo valores, si no hay duplicados salgo y hago una cosa
si hay duplicados meto el valor en una variable y anoto cuantas veces se duplica y hago otra cosa para esa cadena específica pero diferente dependiendo de cuantas veces ocurra, si ocurre 2 veces le aplico un simbolo, si ocurre 3 otro etc
Cualquier ayuda o idea para enfocar el problema es bienvenida. Gracias
pvaldes
- Inicie sesión o regístrese para enviar comentarios
- 846 lecturas


quizás el comando grep pueda valer para empezar a plantearlo.
Si gurumelo, pero el problema es que la cadena a buscar es variable y desconocida. La idea es que el script pueda facilitar la vida a cualquiera que lo use y con sus propios datos, así que quiero hacerlo lo menos interactivo y más sencillo de lanzar que sea posible, lo que busco consiste en coordenadas latitud longitud, es decir dos grupos de un número concreto de caracteres (numéricos en su mayoría) separados por un tabulador y la única característica que la identifica es que esté al menos duplicada, y por eso no puedo utilizar el grep.
gracias por tu aportación, sigo pensando...
mira a ver si te aclaras con:
Mi objetivo es llegar a un guión (en bash o perl) que
1- tome uno o varios archivos de texto
2- tome cada linea de los archivos de manera independiente y contraste los primeros caracteres de cada línea con los de todas las demás líneas
2 -si encuentra duplicados anote cuantas veces aparecen y salga con una respuesta numerica en vez de un simple true false
3- recuerde la cadena de caracteres y les asigne una variable para que con una estructura tipo if else pueda variar el comportamiento del guión
Es decir, comparo valores, si no hay duplicados salgo y hago una cosa
si hay duplicados meto el valor en una variable y anoto cuantas veces se duplica y hago otra cosa para esa cadena específica pero diferente dependiendo de cuantas veces ocurra, si ocurre 2 veces le aplico un simbolo, si ocurre 3 otro etc
Suena a hacer
awk '{a[$0]++}END{for (i in a) if (a[i] > 2) algo con i; else if (a[i] > 3) otra cosa con i}' archivo1 archivo2 archivo3 ...Evidentemente, el problema resuelto con AWK es trivial, por eso me temo que sin mayor especificidad no puedo ofrecer nada significativo.
Saludos
Bueno, ahora me toca trabajar un poco a mi... nunca fui muy fan de awk, hora de ponerse al día... a ver si descifro esto ;-), gracias