![제한된 행에서 무작위 위치 변경](https://linux55.com/image/76793/%EC%A0%9C%ED%95%9C%EB%90%9C%20%ED%96%89%EC%97%90%EC%84%9C%20%EB%AC%B4%EC%9E%91%EC%9C%84%20%EC%9C%84%EC%B9%98%20%EB%B3%80%EA%B2%BD.png)
특정 확률(예: 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)