免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
21 [报告]
发表于 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
22 [报告]
发表于 2012-11-15 19:21 |显示全部楼层
想用随机函数实现的也没有成功, ,帮忙指导下,谢谢
回复 41# yestreenstars


   

论坛徽章:
0
23 [报告]
发表于 2012-11-15 20:47 |显示全部楼层
执行脚本使用如下命令
./date_create.sh  1000   data

1000就对于着RecordNum

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

是直接输入的参数,

回复 44# yestreenstars


   

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

回复 46# yestreenstars


   

论坛徽章:
0
25 [报告]
发表于 2012-11-15 21:14 |显示全部楼层
549206313
回复 48# yestreenstars


   

论坛徽章:
0
26 [报告]
发表于 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


   

论坛徽章:
0
27 [报告]
发表于 2012-11-16 17:02 |显示全部楼层
###a.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

#初始化系统变量
. 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
}




#####1.t_o_crm_subscriber###############
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="${SUB_ID}|${CUST_ID}|${ACTUAL_CUST_ID}|1|||21|0|${MSISDN}|${IMSI}|${ICCID}|nVqm2E1dwPl9NnBLCv2QfQ==|1||||1|20120808222701|20991231235959|0.0|0.0|B01|0000000000000000||20120808222701||20120808222701|20120808222701|20991231235959|20120809004914|20120808222701||${create_oper_id}|0001|${BUSI_SEQ}||${PARTITION_ID}||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/$FILENAME_OUT

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'/PREPAID_FLAG.unl";$22=a;print $0 > "./'$filepath'/'$FILENAME_OUT' "}' ./$filepath/$FILENAME_OUT


    $ECHO "$tablename record created!!!~~~~~~~~~\t   "`date`"\n"
else
  $ECHO "cbe_subscriber needn't create record\n"
fi





回复 46# yestreenstars


   

论坛徽章:
0
28 [报告]
发表于 2012-11-16 17:06 |显示全部楼层
谢谢!!!!!!!!!!!!!1

问题请教.rar

1.52 KB, 下载次数: 5

问题请教,谢谢

论坛徽章:
0
29 [报告]
发表于 2012-11-16 17:09 |显示全部楼层
谢谢,53楼

回复 51# yestreenstars


   

论坛徽章:
0
30 [报告]
发表于 2012-11-17 20:04 |显示全部楼层
求大神们一起帮忙看一下啊,问题到底出在什么地方
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP