
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)