📅  最后修改于: 2023-12-03 15:20:07.982000             🧑  作者: Mango
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
则可以得到一个随机排列的结果。