当前位置: 首页 > news >正文

Linux shuf命令随机打乱行顺序

目录

  • 一. 基本语法
  • 二. 基本使用
  • 三. -n 指定输出的行数
  • 四. -i 生成范围内的整数
  • 五. -e 从参数中抽取数据


一. 基本语法

⏹shuf 是 Linux 中一个非常强大的命令,核心作用是 随机打乱行顺序,就像洗牌(shuffle)一样。尤其适用于

  • 随机抽样
  • 打乱顺序
  • 生成随机数
选项含义
-n number输出 N 行
-r允许重复(replacement)
-i LO-HI生成范围内整数
-e item1 item2 ...从参数中抽样(而非文件)

二. 基本使用

⏹将文件的行乱序

apluser@FengYeHong-HP:0725$ cat A.txt
apple
banana
cherry
water
month
apluser@FengYeHong-HP:0725$ cat A.txt | shuf
cherry
banana
water
apple
month

⏹将顺序输出的数据乱序

apluser@FengYeHong-HP:0725$ seq 1 6 | shuf
1
2
6
4
5
3
apluser@FengYeHong-HP:0725$ seq 1 6 | shuf | xargs
3 5 1 4 6 2
apluser@FengYeHong-HP:0725$ seq 1 6 | shuf | xargs -L 2
4 6
2 1
5 3

⏹可以将生成的数据打散

seq 1 5 | awk 'BEGIN{OFS=","} {printf "%d,user_name_%03d,auid_%03d,地球%d\n", $1, $1, $1, $1
}' | shuf | sed '1i No,auid,用户名,地址'# 👇👇👇👇👇👇No,auid,用户名,地址
2,user_name_002,auid_002,地球2
3,user_name_003,auid_003,地球3
5,user_name_005,auid_005,地球5
4,user_name_004,auid_004,地球4
1,user_name_001,auid_001,地球1

⏹随机生成一个12位的数字

  • xargs -n 1:行转列
  • shuf | head -n 12:将数据打乱之后,只获取前12行
  • tr -d '\n':删除换行符,实现列转行
apluser@FengYeHong-HP:0725$ echo {A..Z} {a..z} {0..9} | xargs -n 1 | shuf | head -n 12 | tr -d '\n';echo
YUqCy9QdNvaW

三. -n 指定输出的行数

⏹将数据打乱之后,只获取前2行

apluser@FengYeHong-HP:0725$ seq 1 100 | shuf -n 2
10
64

⏹随机获取文件中的1行

apluser@FengYeHong-HP:0725$ cat name_list.txt
张三
李四
王五
赵六
apluser@FengYeHong-HP:0725$ shuf -n 1 name_list.txt | awk '{print "中奖的人是→ " $0}'
中奖的人是→ 赵六
apluser@FengYeHong-HP:0725$ shuf -n 1 name_list.txt | awk '{print "中奖的人是→ " $0}'
中奖的人是→ 李四

四. -i 生成范围内的整数

⏹生成10到99内的所有整数,打乱之后,获取前4个,并每行显示2个

apluser@FengYeHong-HP:0725$ shuf -i 10-99 -n 4 | xargs -L 2
83 48
81 20
apluser@FengYeHong-HP:0725$ shuf -i 10-99 -n 4 | xargs -L 2
58 34
64 68

五. -e 从参数中抽取数据

apluser@FengYeHong-HP:0725$ shuf -e 香蕉 苹果 橘子 西瓜
橘子
西瓜
苹果
香蕉
apluser@FengYeHong-HP:0725$ shuf -e $(echo "香蕉 苹果 橘子 西瓜")
西瓜
香蕉
苹果
橘子
apluser@FengYeHong-HP:0725$ shuf -e $(seq 1 3)
3
1
2
apluser@FengYeHong-HP:0725$ shuf -e $(seq 1 3)
3
2
1
http://www.lryc.cn/news/600895.html

相关文章:

  • 差模干扰 共模干扰
  • 利用RAII与析构函数避免C++资源泄漏
  • kafka的部署和jmeter连接kafka
  • 20250726-2-Kubernetes 网络-Service 定义与创建_笔记
  • C++/CLI vs 标准 C++ vs C# 语法对照手册
  • Java 大视界 -- Java 大数据在智能医疗影像数据标注与疾病辅助诊断模型训练中的应用(366)
  • greenhills编译出错问题
  • 20250726-1-Kubernetes 网络-Service存在的意义_笔记
  • 【Spring AI】大模型服务平台-阿里云百炼
  • 高可用集群KEEPALIVED的详细部署
  • 【MySQL】MySQL 缓存方案
  • 使用Clion开发STM32(Dap调试)
  • 在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
  • Flutter控件归纳总结
  • 面试150 IPO
  • 达梦[-2894]:间隔表达式与分区列类型不匹配
  • 大语言模型困惑度:衡量AI语言能力的核心指标
  • Windows Server容器化应用的资源限制设置
  • 小白成长之路-部署Zabbix7(二)
  • Word文档试卷处理新方案:答案提取与格式化一键完成
  • MongoDB数据库高并发商业实践优化·运行优化之不可使用root账户进行MongoDB运行-优雅草卓伊凡
  • python面向对象编程详解
  • Django+celery异步:拿来即用,可移植性高
  • go-admin 构建arm镜像
  • (LeetCode 面试经典 150 题) 20. 有效的括号 (栈)
  • Ubuntu 18.04安装Fast-Lio2教程
  • MySQL进阶学习与初阶复习第三天
  • Windows11下和Vmware中的Ubuntu22.04设置samba服务遇到的一个问题- valid users和guest设置冲突
  • 单元测试、系统测试、集成测试知识详解
  • 深入解析命名管道:原理、实现与进程间通信应用