제한사항이 있는 행의 무작위 장소 변경

제한사항이 있는 행의 무작위 장소 변경

텍스트 파일의 문자 위치를 일정 확률(예: 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)

관련 정보