有限制的行中隨機位置變化

有限制的行中隨機位置變化

我怎麼能以一定的機率(例如 10%)隨機改變文字檔案中的字元位置?

文件:

1  34567
2  12356
3  16987

結果:

1  35674
2  12653
3  61987

答案1

將以下腳本儲存到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

然後像這樣使用它:

$ cat (file name) | bash scramble.sh

例如

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

如果您想將結果儲存到文件中,請執行以下操作:

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

相關內容