akodo escribió:
Yo lo que haría es ordenar primero el fichero. Luego ir leyendo de forma que, partiendo de 0 (o 1 según el caso) anotes todos los números comprendidos entre 0 y el número leído. Actualizas los índices, con lo que el número leído es el nuevo índice inferior y el que te dispones a leer es el índice superior, y anotas todos los números comprendidos entre ambos índices. Cuando se acabe el fichero y leas un número superior al parámetro, entonces paras.
Realmente el problema que veo es cómo ir leyendo los números de uno en uno
el tema es que eso no es bash. digo, hacer eso en bash es una locura.
el tema de fondo, es que bash no esta pensado para manejo numerico. y todo esto se complica enormemente....
quiza... a ver este codigo.
Código:
cat file |sort >> temp
for NUM in temp; do
[ $NUM -lt parametro ] && echo num >> temp2
done
con eso tienes un fichero con los numeros del primero menores que el parametro. la segunda parte es "solo" invertir
Código:
for NUM in {1..parametro};do ## creo que la sintaxis es esta ,pero no tengo ganas de abrir el man....
[ -z "$(cat temp2 |grep NUM)" ] && echo $NUM >> dest # comprueba y si no esta, lo imprime a dest.
done
supongo que hay maneras mas elegantes, pero esa (segun yo) funciona.
y supongo tambien que hay maneras de juntarlo todo y que parezca elegante. pero esque lo he pensado a trozos, y no tenia ganas de juntarlo

PD: si necesitais que ponga la sintaxis habitual de los condicionales, avisais. hace poco que descubri esta, y me parece que simplifica mucho el codigo, asi que intento usarla.
