Alteração de lugar aleatório em linha com restrições

1

Como eu poderia alterar aleatoriamente lugares de caracteres em um arquivo de texto, com alguma probabilidade (digamos, 10%)?

arquivo

:

1  34567
2  12356
3  16987

resultado:

1  35674
2  12653
3  61987
    
por SANDO 05.11.2015 / 20:36

1 resposta

0

Salve o seguinte script em 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

Em seguida, use-o da seguinte forma:

$ cat (file name) | bash scramble.sh

por exemplo,

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

E se você quiser salvar o resultado em um arquivo, faça:

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

Espero que isso ajude.

    
por 05.11.2015 / 21:50