shell随机生成身份证,姓名,电话,日期,分数,等级和insert语句
#!/bin/bash
#生成随机身份证号,性别,年龄,电话,姓名,日期,分数和对应等级,并生成insert语句
#作者AiYS,2018-02-06,转载请注明http://www.cnblogs.com/AiYS/p/8424334.html
#随机身份证号,性别和年龄
function random_id {
#身份证前6位地区码集合
area_code_collection=($(awk '{print $1}' area_code.txt))
#从地区码集合中随机取一个地区码
area_code=${area_code_collection[$(shuf -i 0-3513 -n 1)]}
#随机生成生日
birthday=$(date +"%Y%m%d" -d "-$(shuf -i 1000-15000 -n 1) days")
#计算当前年份
current_year=$(date +"%Y%m%d" | cut -c 1-4)
#计算生成的身份证号的年份
id_year=$(echo ${birthday} | cut -c 1-4)
#根据当前年份和身份证号年份计算年龄
age=$((${current_year}-${id_year}))
#随机生成身份证15-17的3位顺序码,但是不知范围暂定400
seq=$(shuf -i 100-400 -n 1)
#根据身份证第17位判断性别,奇男偶女
gender_num=$(echo ${seq} | cut -c 3)
[ $((gender_num%2)) -eq 0 ] && gender="F" || gender="M"
#用数组保存身份证号前17位的每一位
for ((i=0,j=1;i<17;i++,j++))
do
array[$i]=$(echo ${area_code}${birthday}${seq} | cut -c $j)
done
sum=0
#用字典保存取模11后余数对映的第18位映射关系
declare -A checkcode_map
checkcode_map=(["0"]="1" ["1"]="0" ["2"]="X" ["3"]="9" ["4"]="8" ["5"]="7" ["6"]="6" ["7"]="5" ["8"]="5" ["9"]="3" ["10"]="2")
#前17位对应的权重值
coefficient=(7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2)
#前17位乘以对应的权重求和
for ((i=0;i<17;i++))
do
sum=$((${sum}+${array[$i]}*${coefficient[$i]}))
done
#和取模11
map=$((sum%11))
#生成第18位校验码
checkcode=${checkcode_map[$map]}
echo -e "${area_code}${birthday}${seq}${checkcode},${gender},${age}" >> id.txt
}
#生成随机电话号码
function random_tel {
pretel=(130 131 132 133 134 135 136 137 138 139 145 147 150 151 152 153 155 156 157 158 159 170 171 173 176 177 178 180 181 182 183 184 185 186 187 188 189)
echo ${pretel[$(shuf -i 0-36 -n 1)]}$(shuf -i 10000000-99999999 -n 1) >> tel.txt
}
#生成随机姓名
function random_name {
fname=(赵 钱 孙 李 周 吴 郑 王 冯 陈 褚 卫 蒋 沈 韩 杨 朱 秦 尤 许 何 吕 施 张 孔 曹 严 华 金 魏 陶 姜 戚 谢 邹 窦 章 云 苏 潘 葛 奚 范 彭 郎 鲁 韦 昌 马 苗 凤 花 方 俞 任 袁 柳 鲍 史 唐 费 廉 岑 薛 雷 贺 倪 汤 滕 殷 罗 毕 郝 安 常 乐 于 傅 齐 康 伍 余 元 顾 孟 平 黄 穆 萧 尹 姚 邵 湛 汪 祁 毛 禹 狄 戴 谈 宋 茅 庞 熊 纪 舒 屈 项 祝 董 梁 杜 阮 蓝 闵 席 季 贾 江 童 颜 郭 梅 盛 林 徐 邱 骆 高 夏 蔡 田 樊 胡 凌 霍 虞 万 柯 管 卢 莫 解 宗 丁 邓 单 洪 包 石 崔 吉 钮 龚 程 嵇 邢 裴 陆 荀 羊 甄 麴 封 芮 羿 储 靳 邴 糜 松 段 伊 刘 景 龙 叶 白 赖 卓 蔺 屠 乔 阳 闻 党 翟 谭 姬 申 郦 牛 扈 燕 温 晏 柴 瞿 阎 习 向 古 廖 寇 聂 晁 曾 司马 上官 欧阳 夏侯 诸葛 东方 赫连 皇甫 尉迟 公羊 澹台 公孙 轩辕 令狐 钟离 宇文 长孙 慕容 司徒 完颜)
lname=($(awk '{print $1}' lname.txt))
echo ${fname[$(shuf -i 0-226 -n 1)]}${lname[$(shuf -i 0-2810 -n 1)]}${lname[$(shuf -i 0-2810 -n 1)]} >> name.txt
}
#生成随机日期和时间
function random_time {
echo "$(date +"%Y-%m-%d" -d "-$(shuf -i 365-10000 -n 1) days"),$(date +"%Y-%m-%d %H:%M:%S" -d "-$(shuf -i 5000-12000 -n 1) days")" >> date.txt
}
#生成随机的分数和对应的等级
function random_score {
integer=$(shuf -i 40-99 -n 1)
#decimal=$(tr -dc 0-9 </dev/urandom | head -c 2)两位随机小数
decimal=$(shuf -i 0-9 -n 1)
score="${integer}.${decimal}"
if [ ${integer} -gt 95 ];then
grade='S'
elif [ ${integer} -gt 85 ];then
grade='A'
elif [ ${integer} -gt 75 ];then
grade='B'
elif [ ${integer} -gt 65 ];then
grade='C'
else
grade='D'
fi
echo "${score},${grade}" >> score.txt
}
#删除之前生成的文件
function delete_file {
[ -f id.txt ] && $(rm id.txt) >/dev/null 2>&1
[ -f name.txt ] && $(rm name.txt) >/dev/null 2>&1
[ -f tel.txt ] && $(rm tel.txt) >/dev/null 2>&1
[ -f date.txt ] && $(rm date.txt) >/dev/null 2>&1
[ -f score.txt ] && $(rm score.txt) >/dev/null 2>&1
}
function generate_records {
read -p "需要生成多少条记录:" count
delete_file
if [ ${count} -lt 0 ];then
echo -e "输入错误!输入的数字小于1\n"
else
for ((m=0;m<${count};m++))
do
random_id
random_name
random_tel
random_time
random_score
#echo "生成第$m条记录"
done
fi
#合并生成的文件用,分隔字段
paste -d "," id.txt name.txt tel.txt date.txt score.txt > records.txt
delete_file
}
function sql {
[ -f student.sql ] && $(rm student.sql) > /dev/null 2>&1
#生成sql插入文件student.sql
outfile='student.sql'
IFS=","
while read id gender age name tel entrance examination score grade
do
cat >> ${outfile} << EOF
INSERT INTO student (id,name,gender,age,tel,entrance,examination,score,grade) VALUES ('${id}','${name}','${gender}',$age,'${tel}',${entrance},${examination},${score},'${grade}');
EOF
done < records.txt
}
generate_records
read -p "是否生成sql文件?y or n:" yn
[ "$yn" = "y" -o "$yn" = "Y" ] && sql || echo "Byebye"
shell随机生成身份证,姓名,电话,日期,分数,等级和insert语句的更多相关文章
- Java 随机生成中文姓名,手机号,邮编,住址
package lovo; import java.util.HashMap; import java.util.Map; /** * 随机生成中文姓名,性别,Email,手机号,住址 * @auth ...
- PHP随机生成中国人姓名的类
PHP随机生成类 <?php /*rndChinaName.class.php*/ Class rndChinaName { private $arrXing,$numbXing; privat ...
- Shell随机生成字符串
随机生成18位的字符串,数字 大小写字符 斜线 password=`openssl rand -base64 |-`
- SQLServer 随机生成指定范围的日期
一个分页的问题,DTCms3.0中,分页是根据时间分页的,如果当添加时间(add_time)都是同一个数值时,不管点击第几页,显示的数据都是同一个的内容,于是就有了需要把同一个时间改指定随机日期的功能 ...
- c#随机生成中文姓名
为什么要自己写这个生成器呢?大家应该都有过为测试数据发愁的时候,我就是出于这样的原因. 尽管本次代码很少,但是还会有后续的生成器分享出来. 我代码底子还不是很好,希望各位同道能够发表意见,同是也欢迎大 ...
- SqlServer 随机生成中文姓名(转)
,) )) -- 姓氏 ,) )) -- 名字 INSERT @fName VALUES ('赵'),('钱'),('孙'),('李'),('周'),('吴'),('郑'),('王'),('冯'),( ...
- Golang 随机生成中国人姓名
package main import ( "fmt" "math/rand" "time" ) var lastName = []stri ...
- java 随机生成身份证代码
import java.util.Calendar; import java.util.Collection; import java.util.HashMap; import java.util.I ...
- Python 随机生成有效手机号码及身份证
中国那么大,人那么多,几乎人手一部手机.手机号码已经作为各大互联网站的注册账户.同样,身份证更是如此.以下是生成有效手机号码和身份证号. 身份证需要下载districtcode.txt这个文件:htt ...
随机推荐
- HTML5可以省略全部标记的元素
HTML5可以省略全部标记的元素 1.body 2.colgroup 3.html 4.head 5.tbody
- px单位html5响应式方案
移动端h5响应式方案最近这几年用得最多的最多的就是rem方案了.这个需要计算根元素的font-size来实现响应式. 但这种方案也有一个缺点,那就是font-size不为整数的时候一些字体使用rem单 ...
- css(外部样式表)中各种选择器(定义属性时)的优先级
今天在学css的时候遇到一个问题,用css的外部样式表改变一个<p>元素的颜色,死活就是改变不了,最后才发现是优先级的问题(我自己想当然成后面的优先级就高了,犯了经验主义错误). 先给大家 ...
- 剑指offer 第十天
37.数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数. 采用二分查找法 /* 方法一:时间复杂度O(n),不可选 */ public class Solution { public i ...
- java实现组合问题
刚才刚更新了排列问题,顺带把组合问题也发表一下 1.问题描述: 已知有m个球,从m个球中取n个球有多少种不同的取法. 2.输入示例: 请输入总球的个数和要取的球的个数 6 5 3.输出示例: 共有6种 ...
- 如何使用jQuery-ContextMenu实现右击菜单
最近在做项目中,遇到一个棘手的问题,页面上有很多功能需要实现,每个功能需要绑定一个按钮.如果一个功能绑定一个按钮,那么将会占用页面很大的空间,而且可能会使页面变得不美观.思前想后,决定将所有按钮做成右 ...
- C#接口--C#基础
1.接口的声明 接口:描述属于任何类或者结构的一组相关功能,是一种规范.功能 组成:属性.方法.事件.索引或者这四种成员的任意组合构成 基本知识点: 1)接口默认的权限修饰符是:public,不允许加 ...
- Python Cookbook(第3版)中文版:15.16 不确定编码格式的C字符串
15.16 不确定编码格式的C字符串¶ 问题¶ 你要在C和Python直接来回转换字符串,但是C中的编码格式并不确定. 例如,可能C中的数据期望是UTF-8,但是并没有强制它必须是. 你想编写代码来以 ...
- 分享一下我进入IT行业的经历
今天突然根想写博客,就注册了一个,分享一下我的成长经历. 我第一次接触编程的时候是在上大学的时候,我学的专业是工程测量接触的第一个语言是vb,我记得很清楚,我当时写出第一个小Demo是的心情,感觉到了 ...
- 8Manage:专注企业级CRM服务应用
[导读]经过过去一段时间的资本寒冬,中国的企业服务市场热度渐退,开始步入平稳的发展阶段.面对中国越来越多企业的管理需求,这片具有巨大的发展空间的市场蓝海.我们应该如何面对企业客户CRM的需求,并将其更 ...