← Back to team overview

sslug-teknik team mailing list archive

Storke langsomt bash script

 

Hej i kloge folk bag keyboardet,

Jeg har et script som skal parse en en fil hvor den skal tjekke om nogle numre på nogle felter ligger indenfor nogle globale serier.

Filen t_pcl_ser indeholder ca 181.000 linier hvilket gør at det tager sindsygt lang tid at parse den.

formatet er som følgende:

2080099992|92091661701|92091661800|N|N|Y|Y|N|DK||Y|
2080099997|09999700000|09999799999|N|N|Y|N|N|DK|6000|Y|
2080099997|92091293701|92091293800|N|N|Y|N|N|DK|6000|Y|
2080099999|09999900000|09999999999|N|N|Y|Y|N|DK|6000|Y|
2080099999|92092380001|92092380100|N|N|Y|Y|N|DK|6000|Y|
2080099999|92093628201|92093629200|N|N|Y|Y|N|DK|6000|Y|
2080099999|92094989701|92094990200|N|N|Y|Y|N|DK|6000|Y|
2080099999|92094992601|92094992700|N|N|Y|Y|N|DK|6000|Y|
2080099999|92094992701|92094992800|N|N|Y|Y|N|DK|6000|Y|
2080099999|92095071401|92095071500|N|N|Y|Y|N|DK|6000|Y|

----------------start cut af script----------------

startno1=92080000001
endno1=92081327500

startno2=92085000001
endno2=92085135000

startno3=92085135000
endno3=92085973000

cd ${masterdatadir}

for i in `cat t_pcl_ser`
do
       testcustomerid=`echo $i | cut -d\| -f1`
       teststartno=`echo $i | cut -d\| -f2`
       testendno=`echo $i | cut -d\| -f3`
       testactiveflag=`echo $i | cut -d\| -f4`
       testprocflag001=`echo $i | cut -d\| -f5`
       testprocflag002=`echo $i | cut -d\| -f6`
       testprocflag003=`echo $i | cut -d\| -f7`
       testprocflag004=`echo $i | cut -d\| -f8`
       testcountrya2=`echo $i | cut -d\| -f9`
       testzip=`echo $i | cut -d\| -f10`
       testprocflag005=`echo $i | cut -d\| -f11`

if [ \( ${teststartno} -ge ${startno1} -a ${testendno} -le ${endno1} \) -o \( ${teststartno} -ge ${startno2} -a ${testendno} -le ${endno2} \) -o \( ${teststartno} -ge ${startno3} -a ${testendno} -le ${endno3} \) ]
       then
echo "${testcustomerid}|${teststartno}|${testendno}|${testactiveflag}|${testprocflag001}|Y|Y|${testprocflag004}|${testcountrya2}|${testzip}|${testprocflag005}|" >> ${masterdatadir}/tmp/t_pcl_ser
       else
               echo  ${i} >> ${masterdatadir}/tmp/t_pcl_ser
       fi
done

----------------end cut af script----------------

Er der en anden måde at skrive det på så hastigheden bliver sat i vejret eller skal det skrives i et andet sprog?

På forhånd tak

--

Med venlig hilsen

Martin Ahrentsen



Follow ups