Randomly shuffling lines in Linux / Bash

前端 未结 8 2109
囚心锁ツ
囚心锁ツ 2020-12-01 04:16

I have some files in linux. For example 2 and i need shuffling the files in one file.

For example

$cat file1
line 1
line 2
line 3
line 4
line 5
line          


        
8条回答
  •  广开言路
    2020-12-01 05:02

    It is clearly biased rand (like half the time the list will start with the first line) but for some basic randomization with just bash builtins I guess it is fine? Just print each line yes/no then print the rest...

    shuffle() {
        local IFS=$'\n' tail=
        while read l; do
            if [ $((RANDOM%2)) = 1 ]; then
                echo "$l"
            else
                tail="${tail}\n${l}"
    
            fi
        done < $1
        printf "${tail}\n"
    }
    

提交回复
热议问题