shell 打亂檔案行

來源:互聯網
上載者:User

標籤:array   shell   

思路,產生一個隨機數組,然後按按照數組的元素將檔案中行的重新輸出1、隨機數組的產生    看書的時候感覺很是簡單。第一次用卻有點無從下手。    首先是定義,shell中的變數是弱變數,可以隨時定義。        arr=(`seq 57`)        建立一個1..57的一個數組,注意一定要加括弧,否則定義不成數組。        也可以使用for迴圈的方式為數組動態賦值。        for ((i=0;i<57;i++)) #有空格        do            arr[$i]=$(($i+1))        done    再次是產生隨機數        使用內部變數$RANDOM,產生的是0-32767。    #!/bin/bash    arr=(`seq 57`)    let "a=$RANDOM%57"    let "b=$RANDOM%57"    echo "a="$a    echo "b="$b    tmp=${arr[$a]}    arr[$a]=${arr[$b]} #賦值的時候arr[$a],不要寫成${arr[$a]}    arr[$b]=$tmp    echo ${arr[@]}     將上面的過程迴圈10000次    44 13 48 53 22 15 35 28 1 31 8 49 4 34 6 55 20 32 26 40 18 37 16 43     9 27 25 42 2 3 50 11 56 46 24 41 7 12 54 30 45 47 17 23 33 10 51 19     52 38 57 14 29 36 39 5 212、打亂檔案行    #!/bin/bash    arr=(`seq 57`)    for ((i=0;i<10000;i++))    do            let "a=$RANDOM%57"            let "b=$RANDOM%57"            tmp=${arr[$a]}            arr[$a]=${arr[$b]}            arr[$b]=$tmp    done    #echo ${arr[@]}    for i in ${arr[@]}    do            j=0            while read line #注意讀取檔案的寫法            do                    ((j++))                    if [ "$i" -eq "$j" ];then                            echo "i=$i,j=$j:$line"                            echo $line >> list1.txt                            break                    fi            done < backup.txt    done   通過上述的指令碼,感覺即使把書看完了,知道了一些東西,還是不行,重要的是不停的練習。即使是很簡單的東西,如數組,if判斷等,不寫用的時候只能是眼高手低,無從落筆。

shell 打亂檔案行

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.