Cambio de lugar aleatorio en fila con restricciones

Cambio de lugar aleatorio en fila con restricciones

¿Cómo podría cambiar aleatoriamente la ubicación de los caracteres en un archivo de texto, con cierta probabilidad (digamos 10%)?

archivo:

1  34567
2  12356
3  16987

resultado:

1  35674
2  12653
3  61987

Respuesta1

Guarde el siguiente script en scramble.sh:

posts=""
arrlen=0
rempos=0

cat | while read procl
  do for i in `seq 0 $((${#procl}-1))`
       do let arrlen=$arrlen+1
       done
     # scramble characters
     posts=""
     for i in `seq 0 $((${#procl}-1))`
       do if [ $((RANDOM%5)) -eq 1 ]
             then rempos=$((RANDOM%arrlen))
             else rempos=0
          fi
          posts+=${procl:$rempos:1}
          procl="${procl:0:$((rempos))}${procl:$((rempos+1)):$((arrlen-rempos-1))}"
          let arrlen=$arrlen-1
       done
      echo "$posts"
  done

Entonces úsalo así:

$ cat (file name) | bash scramble.sh

p.ej

$ cat test.txt | bash scramble.sh
36475
15236
81679

Y si desea guardar el resultado en un archivo, haga:

$ cat (file name) | bash scramble.sh > (new file name)

información relacionada