免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jonish
打印 上一主题 下一主题

[文本处理] 请教个问题,谢谢 [复制链接]

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
41 [报告]
发表于 2012-11-15 18:44 |只看该作者
回复 40# jonish


    直接在论坛上问就好了,我经常逛论坛的。

论坛徽章:
0
42 [报告]
发表于 2012-11-15 19:19 |只看该作者
主要脚本是这样的,我想用这个脚本制造大量的数据,可能上千万,部分字段枚举,例如PREPAID_FLAG,SUB_STATE。我想造的数据更实际些,所以使用了如下方法,但是替换产生的时候为什么只能产生少量的数据,这是为什么?
###config_b.sh
#!/usr/bin/ksh

#############1.t_o_crm_subscriber###########
aaaa=200002%07d
bbbbb=100002%07d
ccccc=100002%07d
##repaid_flag预付费标记(第8位)有的取1,有的取0####
PREPAID_FLAG_var[0]="0"
PREPAID_FLAG_var[1]="1"

dddd=6982%06d
ffff=14566258%07d
ffff=154985103154%07d

##关联t_o_crm_his_sub_state_change表的SUB_ID,取值B01、B06
SUB_STATE_var[0]="B01"
SUB_STATE_var[1]="B06"
   
kkkkk=%07d
hhhhh=10%07d
iiiiii=%07d
jjjj=%07d

###主脚本date_create.sh
#!/bin/bash

ECHO="echo"
if [ "`uname`" = "Linux" ] ;then
   ECHO="echo -e"
fi


#Usage
usage()
{
    UsageStr=""
    UsageStr="$UsageStr""---------------------------------------------------\n"
    UsageStr="$UsageStr""#     Usage: $0  SubscriberNumber path\n"
    UsageStr="$UsageStr""---------------------------------------------------\n"
    $ECHO "$UsageStr"
    exit 1
}

if [ ! $# -eq 2 ]; then
    usage
else
    RecordNum=$1
    filepath=$2
fi

if [ ! -d ./$filepath ]; then
    mkdir $filepath
fi

#初始化系统变量
. config_b.sh
####枚举字段取值#########具体的枚举数组值是多少,在另外一个文件中定义了
for((i = 0; i < "$RecordNum"; ++i))
{
PREPAID_FLAG=${PREPAID_FLAG_var[$((RANDOM%2))]}
echo $PREPAID_FLAG >> ./$filepath/PREPAID_FLAG.unl
}

for((i = 0; i < "$RecordNum"; ++i))
{
SUB_STATE=${SUB_STATE_var[$((RANDOM%2))]}
echo $SUB_STATE >> ./$filepath/SUB_STATE.unl
}
if [ "x$t_o_crm_subscriber" = "xy" ] ;then

    $ECHO "\033[5mCreating t_o_crm_subscriber table data.......\033[m\t\t"`date`



    FILENAME_OUT="B0001820120816_0_0001.AVL"


   tmplrec="${aaaa}|${bbbb}|${cccc}|1|||21|0|${dddd}|${fffff}|${kkkkk}|nVqm2E1dwPl9NnBLCv2QfQ==|1||||1|20120808222701|20991231235959|0.0|0.0|B01|0000000000000000||20120808222701||20120808222701|20120808222701|20991231235959|20120809004914|20120808222701||${hhhh}|0001|${iiii}||${jjjjj}||1||||101"

    awk 'BEGIN{
        for (i = 0; i < '$RecordNum'; ++i)
        {
               printf "'"${tmplrec}"'\n",i,i,i,i,i,i,i,i,i,i,i
        }
    }' /dev/null > ./$filepath/subscriber1.unl

awk 'BEGIN{FS=OFS="|"}{getline a < "./'$filepath'/PREPAID_FLAG.unl";$8=a;print $0 > "./'$filepath'/'$FILENAME_OUT"}'./$filepath/$FILENAME_OUT
awk 'BEGIN{FS=OFS="|"}{getline a < "./'$filepath'/SUB_STATE.unl";$22=a;print $0 > "./'$filepath'/'$FILENAME_OUT'"}' ./$filepath/$FILENAME_OUT

fi






//回复 32# yestreenstars


   

论坛徽章:
0
43 [报告]
发表于 2012-11-15 19:21 |只看该作者
想用随机函数实现的也没有成功, ,帮忙指导下,谢谢
回复 41# yestreenstars


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
44 [报告]
发表于 2012-11-15 20:08 |只看该作者
你不同脚本之间是怎么传递变量的?比如第三个脚本中的$RecordNum是怎么传递过来的?

论坛徽章:
0
45 [报告]
发表于 2012-11-15 20:47 |只看该作者
执行脚本使用如下命令
./date_create.sh  1000   data

1000就对于着RecordNum

即在data文件夹下产生1000数据

是直接输入的参数,

回复 44# yestreenstars


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
46 [报告]
发表于 2012-11-15 21:03 |只看该作者
回复 45# jonish


    不知道为什么,我这里运行后出现错误:

论坛徽章:
0
47 [报告]
发表于 2012-11-15 21:07 |只看该作者
不清楚了,明天再回公司看看脚本把,我是直接贴上来的,应该不会出问题把,不过还是谢谢啦,明天有时间吗?再帮忙一起看一下

回复 46# yestreenstars


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
48 [报告]
发表于 2012-11-15 21:09 |只看该作者
回复 47# jonish


    可以,你说一下你QQ吧,我加你,你到时直接把脚本发给我。

论坛徽章:
0
49 [报告]
发表于 2012-11-15 21:14 |只看该作者
549206313
回复 48# yestreenstars


   

论坛徽章:
0
50 [报告]
发表于 2012-11-16 16:59 |只看该作者
###b.sh
#!/usr/bin/ksh

#############1.t_o_crm_subscriber###########
SUB_ID=200002%07d
CUST_ID=100002%07d
ACTUAL_CUST_ID=100002%07d
##repaid_flag预付费标记(第8位)有的取1,有的取0####
PREPAID_FLAG_var[0]="0"
PREPAID_FLAG_var[1]="1"

MSISDN=6982%06d
IMSI=14566258%07d
ICCID=154985103154%07d
SUB_PASSWORD=nVqm2E1dwPl9NnBLCv2QfQ==
##关联t_o_crm_his_sub_state_change表的SUB_ID,取值B01、B06
SUB_STATE_var[0]="B01"
SUB_STATE_var[1]="B06"

create_oper_id=%07d
BUSI_SEQ=10%07d
PARTITION_ID=%07d

#####配置各个表是否要生成数据,y表示生成,n和其他表示不生成
t_o_crm_subscriber=y

#####常量设置结束####################



回复 46# yestreenstars


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP