📜  shell 随机排列行 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:20:07.982000             🧑  作者: Mango

Shell-Bash – 随机排列行

主题介绍

Shell-Bash 是一个脚本语言,用于操作 Unix 操作系统,脚本通过命令行运行。本主题主要介绍如何在 Shell-Bash 中实现随机排列行的功能,对于需要随机化数据的程序员来说,这个功能十分有用。

代码实现
#!/bin/bash
# 将文件中的行随机排序
# 文件名作为第一个参数传入脚本

file=$1
if [[ ! -f $file ]]; then
    echo "文件 $file 不存在"
    exit 1
fi

# 获取文件总行数
lines=$(wc -l < $file)

# 生成随机行数,并依此从文件中提取相应的行
for i in $(seq 1 $lines); do
    rand=$(($RANDOM % $lines + 1))
    sed -n ${rand}p $file
done
程序说明

该脚本接受一个参数,为要随机排列的文件名。首先判断所输入的文件是否存在,如果不存在则输出错误信息并退出程序。如果文件存在,则获取文件的总行数,然后生成随机数,从文件中提取对应的行。通过循环,可以保证每一行都被随机了一次。

示例

如果有一个包含三行数字的文件 numbers.txt

1
2
3

运行脚本 shuffle.sh,并将文件名 numbers.txt 当做参数传入:

$ ./shuffle.sh numbers.txt
2
1
3

则可以得到一个随机排列的结果。