Zufälliger Platzwechsel in der Reihe mit Einschränkungen

Zufälliger Platzwechsel in der Reihe mit Einschränkungen

Wie kann ich die Stellen von Zeichen in einer Textdatei mit einer gewissen Wahrscheinlichkeit (sagen wir 10 %) zufällig ändern?

Datei:

1  34567
2  12356
3  16987

Ergebnis:

1  35674
2  12653
3  61987

Antwort1

Speichern Sie das folgende Skript unter 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

Dann verwenden Sie es folgendermaßen:

$ cat (file name) | bash scramble.sh

z.B

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

Und wenn Sie das Ergebnis in einer Datei speichern möchten, gehen Sie wie folgt vor:

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

verwandte Informationen