`
hanqunfeng
  • 浏览: 1541034 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用shuf命令模拟数据

阅读更多

有时因为测试需要,要在数据库中模拟大量的数据,而这些数据都有一定的规律,比如现在有一个包含200个用户昵称的数据文件,要将这些昵称导入到用户表中,用户表的属性有姓名、昵称、性别、年龄、用户类型等等,姓名必须是字母和数字组成的,而年龄只能取值0、1、2,分别代表女、男、保密,而年龄需要在18~35岁之间,用户类型只能取两个值(普通,高级),如何模拟出这样一些数据呢,使用shuf命令可以轻松搞定。方法如下:

一.准备数据文件

1.性别数据文件:sex.list

0

1

2

2.年龄数据文件:age.list

18

19

20

……

……

35

3.用户类型数据文件:type.list

普通

高级

4.用户名称数据文件:asciitab.list

0

1

2

……

……

9

a

b

……

……

z

A

B

……

……

Z

5.昵称文件内容如下:alais.list

天空
昭昭
多多

……

……
坏孩子
先进分子

二.编写生产数据脚本

新建一个脚步文件:makeUserData.sh,内容如下:

catalais.list |

while read line
do
username=`shuf -n 1 asciitab.list``shuf -n 1 asciitab.list``shuf -n 1 asciitab.list``shuf -n 1 asciitab.list``shuf -n 1 asciitab.list``shuf -n 1 asciitab.list`
sex=`shuf -n 1 sex.list`
age=`shuf -n 1 age.list`
type=`shuf -n 1 type.list`
echo $username##$line##$sex##$age##$type

done

说明:

1.shuf -n 1 asciitab.list 的含义是从asciitab.list 文件中随机取出一行数据,如果是-n 2就是取出两行数据

2.username就是由六位字母或数字组成

3.catalais.list |while read line:读取alais.list的每一行数据,并将该行数据保存在line中,echo $username##$line##$sex##$age##$type,就用到了这个变量

三.运行脚本

sh makeUserData.sh > userData.list

生成的userData.list内容如下:

a2Srtc##昭昭##1##34##普通

bHGtrs##坏孩子##2##19##高级

…………………………

…………………………

98Dyte##天空##1##24##普通

四.数据入库

这部分就随意吧,喜欢使用什么方式都可以,基本思想就是解析文件并入库。

补充说明:

这个帖子发了有一段时间了,最近才发现,原来好多linux版本在安装时不会安装shuf命令,我在网上查了一下,未发现有关安装这个命令的资料,同时通过linux自动查找也没有找到,比较奇怪啊。

我当初使用的cygwin,一个在windows上模拟linux的工具,选择的是完全安装,shuf也就装上了。

这里给出一个没有shuf命令的解决办法,就是写一个随机读取一行文件的小命令,如下:

perl -e 'srand;' \
-e 'rand($.) < 1 && ($it = $_) while <>;' \
-e 'print $it' $1
这里使用了perl命令,一般来说,perl命令是都会默认安装的。

将以上脚本保存在文件shuf.sh中,将以上用到shuf -n 1的地方修改为sh shuf.sh即可。

 

分享到:
评论

相关推荐

    程序员必知必会linux基础知识

    在文档中提到的使用shuf命令模拟数据,是为了在测试时模拟数据库中的数据,特别是在需要特定模式的数据时,比如测试用户信息的导入。在这个例子中,通过准备几个基础数据文件(性别、年龄、用户类型和昵称),然后...

    Linux下10条命令

    例如,您可以使用 ls 命令显示文件夹的内容,然后使用 shuf 命令随机地选择文件或文件夹。 7. ss 命令 ss 命令可以显示 socket 统计信息,类似于 netstat 命令。这个命令可以显示更多的 TCP 和状态信息,对于网络...

    11个很有用但鲜有人知的 linux 命令.docx

    6. **last命令**:last命令显示系统上用户的登录历史,包括登录时间、退出时间、使用的终端等,通过对`/var/log/wtmp`文件的查询来获取信息。 7. **curl ifconfig命令**:curl通常用于从URL下载数据,ifconfig则是...

    11 个很有用但鲜有人知的 linux 命令.docx

    6. **last命令**:显示系统上最后一次登录用户的记录,包括登录时间、退出时间、使用的终端等信息,通过查看"/var/log/wtmp"文件获取这些数据,有助于系统安全管理和审计。 以上这些命令虽然平时可能不太常用,但...

    pytorch加载语音类自定义数据集的方法教程

     pytorch对一下常用的公开数据集有很方便的API接口,但是当我们需要使用自己的数据集训练神经网络时,就需要自定义数据集,在pytorch中,提供了一些类,方便我们定义自己的数据集合 torch.utils.data.Dataset:...

    windows dos环境下直接运行linux命令集合

    使用方法,解压到本地目录,配置path,即可在dos下使用linux命令。 windows下能直接执行的linux命令,基本包括日常所有,如:[.exe grolbp.exe regtool.exe a2p.exe grolj4.exe rm.exe a2p5.10.0.exe grops.exe ...

    NLP大作业-使用LSTM进行汉语词类标注python源码+文档说明+数据(高分大作业)

    使用北京大学人民日报语料库,已分词的txt文档被存放在 data 路径下, 其中 1998-01-2003_shuf.txt 为经过 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才...

    linux常用命令源码(ls,cp,chmod,df等一百多个命令)

    linux下大部分常用命令源码,偶正要开始学习-_- base64.c basename.c c99-to-c89.diff cat.c chcon.c chgrp.c chmod.c chown.c chown-core.c chown-core.h chroot.c cksum.c comm.c copy.c cp.c cp-hash.c csplit.c ...

    Linux下5个有趣的命令行技巧介绍.docx

    `stat`命令可以提供文件的元数据,如修改时间、访问时间、权限等。只需输入`stat filename_ext`,例如`stat abc.pdf`,就能查看相应文件的详细信息。 最后一个技巧适合初学者,通过`man`命令结合`ls`、`shuf`和`...

    11个有用的Linux命令

    **shuf** 命令可以随机地从输入中选取行或文件。这对于需要随机选择数据的情况非常有用。 - **语法**: `shuf [options] [file]` - **示例**: 随机选择文件夹中的一个文件: ```bash # ls Desktop Documents ...

    NLP大作业:基于python+LSTM进行汉语词类标注源码+文档说明+数据+安装教程(高分课程设计)

    使用北京大学人民日报语料库,已分词的txt文档被存放在 data 路径下, 其中 1998-01-2003_shuf.txt - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传...

    在python中以相同顺序shuffle两个list的方法

    通常做机器学习问题时,需要准备训练数据,通常会把样本数据和标签存放于2个list中,比如train_x = [x1,x2,…,xN][x1,x2,…,xN],train_y = [y1,y2,…,yN][y1,y2,…,yN]. 有时候是需要将数据shuffle后再做处理的...

    高级Bash脚本编程指南

    生成随机数可以使用 `shuf` 命令或者通过计算实现。 ##### 10. 变量处理 - **10.1 字符串处理** 包括字符串的分割、替换等功能。 ```bash str="hello world" echo "${str//world/universe}" ``` - **10.2 ...

    Linux使用Cron+AT实现在某个确定的时间段内随机执行命令

    # 使用at命令安排延迟执行 echo "$COMMAND" | at now + $RANDOM_MINUTES min ``` 这个包装脚本首先生成一个1到60秒的随机数,然后生成一个2到350分钟的随机数。这两个随机数将用于确保签到命令不会在整点执行,从而...

    Linux shell下30个有趣的命令和提示(推荐)

    21. **保持SSH会话后程序运行**:`nohup` 和 `disown` 命令可确保程序在退出SSH会话后继续运行,或者使用`screen`或`tmux`创建持久的终端会话。 22. **定时运行命令**:`timeout` 命令可以限制命令执行时间,如`...

    random-file-generator:此脚本将生成在给定范围内具有随机大小的文件。 生成的文件将填充随机数据并存储在当前目录中

    在这个脚本中,`dd`可能被用来创建空白文件,然后使用其他命令(如`shuf`或`openssl rand`)生成随机数据并写入这些文件,以确保文件内容是不可预测的。 此外,生成的文件默认会被保存在执行脚本的当前工作目录中。...

    快速自学Linux命令的4种方法

    这会向你介绍一些有用的命令及其高级使用技巧。 在.bashrc中(/home/.bashrc)增加如下一行: echo Did you know that:; whatis$(ls /bin | shuf -n 1) 你只需要增加这行就够了!如果你想让它更娱乐化一些,你可以...

    shell 随机从文件中抽取若干行的实现方法

    shuf -n5 main.txt sort -R main.txt | head -5 awk -vN=5 -vC=”`wc -l file`” ‘BEGIN{srand();while(n&lt;N){i=int(rand()*C+1);...shuf 命令的选项: -e, –echo :将每个参数视为输入行 -i, –input-ran

    busybox for windows

    这是一款使Unix命令集合能直接在window上面使用的应用程序。 所含的命令有: [, ar, ash, awk, base64, basename, bash, bbconfig, bunzip2, bzcat, bzip2, cal, cat, catv, chmod, cksum, clear, cmp, comm, cp, ...

Global site tag (gtag.js) - Google Analytics