使用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即可。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值