1 2 | Myarray[1]=”xu sihua” Myarray[2]=”780927” |
1 2 3 | Myarray[“first”]=”xu” Myarray[“last”]=”si hua” Myarray[“birth”]=”780927” |
1 2 3 | --sert into table_a ( field1,field2,field3 ...) values ( 3,1,'xx',...) ; --sert into table_a ( field4,field1,field2 ...) valuse ( 'yyy',2,675 ,...); --sert into table_a ( field1,field8,fieldN ...) valuse ( 'zzz','ccc','eee' ,...); |
1 2 3 | field1_value|field2_value|field3_value|.....|fieldN_value| field1_value|field2_value|field3_value|.....|fieldN_value| field1_value|field2_value|field3_value|.....|fieldN_value| |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | BEGIN { print "\n Extract some data from CDR Data Package. ","\n", "Processing begins at:",strftime("%Y%m%d%H%M%S", systime()) #为了记录程序的运行时间我在程序开始时输出当前的系统时间,用到了 AWK 的内置函数 strftime. } { #下面创建了数组 ta_record,数组的下标就是记录中的字段名 ta_record["field1"]="" ta_record["field2"]="" ta_record["field3"]="" ta_record["field4"]="" ………… ta_record["fieldn"]="" #下面把每条记录中的字段与对应的值存入关联数组中 for (i=5; i<=(NF-1)/2;i++) { if(i%2 > 0) { value=tolower($(i+(NF-3)/2 )) if( match(value,/^'/) ) #有些字段的值是用单引号引起来的这个需 #要去掉。 { #这里用了 AWK 的 tolower 和 substr 函数 ta_record[tolower($i)]=substr(value,2,length(value)-2) } else #字段的值如果不带单引号直接赋值即可。 ta_record[tolower($i)]=value } } #根据自己的需要输出数据,可以加多个过滤条件,例如: #只输出字段 fieldx 的值为 3 和字段 fieldy 的值为 12 的记录 if( (NR+1)%10000 == 0) {printf("%s",". ")} if(ta_record["fieldx"] == 3 || ta_record["fieldy"] == 12 ) { printf("%s%s%s%s%s%s%s%s%s%s%s\n", ta_record["field1"],"|", ta_record["field2"],"|", ta_record["field3"],"|", ta_record["field4"],"|" ,ta_record["field5"],"|", ta_record["fieldN"],"|") >> ta_record["fieldz"] #这里用ta_record["fieldz"]作为输出文件是有好处 #的,如果fieldz有多个可能的值,例如1,3,5 #那么输出的结果就会生成文件名是1,3,5的三 #个文件,分别记录了fieldz的值为1,3,5的结果,文 #件名是动态产生的,当然您也可以写一个固定的 #文件名把所有结果输出到#一个结果文件中。 } } #最后,在程序运行完成时输出当前的系统时间,这样就可以大概算出这个 #程序的总运行时间了。 END { print "\n","Processing ends at: ",strftime("%Y%m%d%H%M%S", systime()) } |
1 2 3 | 11|991|1540|13579210134|00992927770589|00992927770589| 33|996|77|13565078660|95533|099195533| 3|991|30|9918814897|200|09063353941| |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |