#! /bin/sh #EnhancedFullDownload_20191021.csv #"Service Type","Prefix","Number Length","From","To","Status","Quantity","Allocatee","Allocation Date","Latest Holder","Latest Transfer Date","Current EROU holder","EROU assignment date","Numbering Area" # 0343a.csv eg. #0340343000,0340343999,Allocated,1000,Manangatang # x0340343,Manangatang #0343016000,0343016599,Allocated,600,Ballarat # x0343016000,Ballarat # x0343016100,Ballarat # x0343016200,Ballarat # x0343016300,Ballarat # x0343016400,Ballarat # x0343016500,Ballarat #0343016800,0343017299,500,Ballarat # x03430168,Ballarat # x03430169,Ballarat # x03430170,Ballarat # x03430171,Ballarat # x03430172,Ballarat #0343115000,0343115099,Allocated,100,Ararat # x03431150,Ararat #0343677000,0343679999,Allocated,3000,Bacchus Marsh # x0343677,Bacchus Marsh # x0343678,Bacchus Marsh # x0343679,Bacchus Marsh # 10 -> 1 # 100 -> 2 # 1000 -> 3 #INFILE="0343a.csv" INFILE="EnhancedFullDownload_20191021.csv" OUTFILE="nn_table_new.csv" rm -f "$OUTFILE" rm -f dialr1.warn rm -f dialr1.err awk -F "," -v "INFILE=$INFILE" -v "OUTFILE=$OUTFILE" ' function trim(s) { sub(/^[ \t]*/,"",s) sub(/[ \t]*$/,"",s) gsub(/\,/,";",s) gsub(/\"/,"",s) gsub(/ /,"",s) return s } function ld_zo_table(zotablefile) { printf("ld_zo_table(%s)\n", zotablefile) while ( (getline aline < zotablefile) > 0 ) { split(aline, a_arr, ",") ##printf("aline=%s\n", aline) f = 0 location = trim(a_arr[++f]) zo_table_location_arr[location] = 1 print " zo_table_location_arr[" location "] = [" zo_table_location_arr[location] "]" } close(zotablefile) } BEGIN { ld_zo_table("zo_table.csv") print "" print "Start:" print "" } { f = 0 if ( INFILE == "0343a.csv" ) { From = trim($(++f)) To = trim($(++f)) Status = trim($(++f)) Quantity = trim($(++f)) Numbering_Area = trim($(++f)) } else { Service_Type = trim($(++f)) Prefix = trim($(++f)) Number_Length = trim($(++f)) From = trim($(++f)) To = trim($(++f)) Status = trim($(++f)) Quantity = trim($(++f)) Allocatee = trim($(++f)) Allocation_Date = trim($(++f)) Latest_Holder = trim($(++f)) Latest_Transfer_Date = trim($(++f)) Current_EROU_holder = trim($(++f)) EROU_assignment_date = trim($(++f)) Numbering_Area = trim($(++f)) } print "------------------------" print "ROW: [" $0 "]" if ( Service_Type == "Service Type" ) { # skip header print "Skipping Header" next } print "From=[" From "]" " To=[" To "]" " Status=[" Status "}" " Quantity=[" Quantity "]" " Numbering_Area=[" Numbering_Area "]" if ( toupper(Status) == "SPARE" ) { # skip Spare numbers print "Skipping Spare" next } if ( Numbering_Area == "" ) { warnout = "WARNING: Skipping BLANK Numbering_Area NR=" NR print warnout print warnout | "sort -u >>dialr1.warn" next } if ( zo_table_location_arr[Numbering_Area] != 1 ) { errout = "ERROR: [" Numbering_Area "] not zo_table.csv" print errout print errout | "sort -u >>dialr1.err" } #if (toupper(Numbering_Area) == "BALLARAT" || toupper(Numbering_Area) = = "ARARAT") { print From "," Quantity "," Numbering_Area ## 100 -> 900 #if ( length(Quantity) == 3 ) { # loopi = int(Quantity / 100) # startprefix = substr(From,1,8) # print " loopi = [" loopi "]" " startprefix=[" startprefix "]" # for ( i = 0; i < loopi; ++i ) { # x = ("1" startprefix) + i # prefix = substr(sprintf("%d", x),2) # print " i=" i " prefix=[" prefix "]" # } #} len = length(Quantity) pwr = 10 ** (len - 1) print " len=[" len "]" " pwr=[" pwr "]" loopi = int(Quantity / pwr) startprefix = substr(From,1,10 - (len-1)) print " loopi = [" loopi "]" " startprefix=[" startprefix "]" for ( i = 0; i < loopi; ++i ) { x = ("1" startprefix) + i prefix = substr(sprintf("%d", x),2) print " i=" i " prefix=[" prefix "]" # create nn_table.csv format outstr = sprintf("x%s,%s", prefix, Numbering_Area) print "outstr=[" outstr "]" print outstr | "sort >" OUTFILE } #} } ' < $INFILE > dialr1.log