使用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,内容如下:

cat alais.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.cat alais.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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值