How to replace variable inside the variable

still it doesnt work

create table acct_to_print_bak as select BILL_DATE,ACCT_NO,STATUS_CODE,floor((ROWNUM-1)/N)+101 BP_PARTN_NUM,SYS_APPL_ID FROM ( select T1.BILL_DATE,T1.ACCT_NO,T1.STATUS_CODE,T1.BP_PARTN_NUM,T1.SYS_APPL_ID,T3.N from acct_to_print t1,inv_acct_bill_addr T2 ,(select ceil(count(*)/20) N from inv_acct_bill_addr) T3 where t2.bill_date='19-FEB-07' and t2.bill_date=t1.bill_date and t1.ACCT_NO=t2.ACCT_NO order by T2.postal_code ) T4;  commit;  truncate table acct_to_print;  insert into acct_to_print (select * from acct_to_print_bak);  commit;  drop table acct_to_print_bak
                                                                                                                                                                                                                                                                                                                                                                                                                                         *
ERROR at line 1:
ORA-00911: invalid character


The error show for semicolon,
its still not go to new line afteruse the command you give,any suggestion

Add set -vx and show the trace.
Did you add this to your script sed "s/;/;\\
/g"

set -vx

USERID=USER/pass
SCRIPTFILE=/rnmucdr/ednms05/ken/xMNBDF045_Script.sql
BILLDATE=19-FEB-07
STARTPARTNNUM=101
TOTALPARTN=20
SQLLOG=${BILLDATE}_xMNBDF045_P_CTEL.log

sed 's/\([()\*]\)/\\\1/g' $SCRIPTFILE > tmp
mv tmp $SCRIPTFILE

echo $SQLLOG
echo $SCRIPTFILE
SCRIPT=$( eval echo $(cat ff) | sed "s/;/;\\
/g")

sqlplus -s $USERID > $SQLLOG << EOF
WHENEVER SQLERROR EXIT 1
$SCRIPT
EOF

if [ $? -ne 0 ]
then
cat $SQLLOG
else
echo "SUCCESSFULLY FINISHED" > $SQLLOG
fi

bro thanks bro,
its works find,
acuatly i put the /g same line after i put in new line it works
thanks man
but i not much understand the sed commands,i new in it
will learn soon with your help
thanks man

hi bro need your help again,
this path /rnmucdr/ednms05/ken/template/xMNBDF070_Script.sql

set echo off;
set head off;
set feedback off;
set pagesize 0;
spool $OUTPUTFILENAME;
select to_char(bill_date,'yyyymmdd')||rpad(acct_no,14)||withhold_code||to_char(withhold_qty,'fm009') from invoice where sys_a
ppl_id = '$SYSAPPLID' and bill_date = '$BILLDATE' and withhold_code is not null and withhold_qty > 0;
spool off;
exit;

since this have pipe | is there so i added pipe as bellow

USERID=user/pass
SYSAPPLID=NTEL
BILLDATE=01-JAN-07
OUTPUTFILENAME=/rnmucdr/ednms05/ken/data/${SYSAPPLID}_${BILLDATE}_WITHHOLD_ACCTS.dat
LOGFILENAME=/rnmucdr/ednms05/ken/logs/${SYSAPPLID}_${BILLDATE}_xMNBDF070_P_CTEL.log
SCRIPTFILE=/rnmucdr/ednms05/ken/template/xMNBDF070_Script.sql
TEMPWRITEFILE=/rnmucdr/ednms05/ken/xMNBDF070_Script.sql.TMP

sed -e "s/'/\\\'/g" -e 's/\([();*|]\)/\\\1/g' $SCRIPTFILE > $TEMPWRITEFILE

SCRIPTFILE=$TEMPWRITEFILE


SCRIPT=$( eval echo $(cat $SCRIPTFILE) | sed "s/;/;\\
/g")


sqlplus -s $USERID 1> $OUTPUTFILENAME 2>$LOGFILENAME<< EOF
WHENEVER SQLERROR EXIT 1
$SCRIPT
EOF

if [ $? -ne 0 ]
then
cat $OUTPUTFILENAME > $LOGFILENAME
rm $OUTPUTFILENAME > /dev/null
cat $LOGFILENAME
else
echo "SUCCESSFULLY CREATE FILE $OUTPUTFILENAME" > $LOGFILENAME
fi

But it doesnt work???
Any other problem
sorry to trouble you again and again

Add >

sed -e "s/'/\\\'/g" -e 's/\([();*|>]\)/\\\1/g' $SCRIPTFILE > $TEMPWRITEFILE

thanks man it works,i am so dump...

DB=abcserv
DB_USERID=ad
DB_PASSWORD=devfl
SYSAPPLID=NTEL
DP_FILE_SYS_ID=Cas
BILLDATEF1=010107
BILLDATEF2=01/01/07
OUTPUTFILENAME=/rnmucdr/ednms05/withold_accts/config/FNBDPCF2_${SYSAPPLID}
LOGFILENAME=/rnmucdr/ednms05/withold_accts/logs/${SYSAPPLID}_${BILLDATE}_xFNBDPCF2_${SYSAPPLID}.log
SCRIPTFILE=/rnmucdr/ednms05/withold_accts/template/FNBDPCF2
TEMPWRITEFILE=/rnmucdr/ednms05/withold_accts/FNBDPCF2_${SYSAPPLID}.TMP

sed -e "s/'/\\\'/g" -e 's/\([();*|>]\)/\\\1/g' $SCRIPTFILE > $TEMPWRITEFILE

SCRIPTFILE=$TEMPWRITEFILE

eval echo $(cat $SCRIPTFILE) | sed "s/;/;\\
/g" > test

if [ $? -ne 0 ]
then
cat $OUTPUTFILENAME > $LOGFILENAME
rm $OUTPUTFILENAME > /dev/null
cat $LOGFILENAME
else
echo "SUCCESSFULLY CREATE FILE $OUTPUTFILENAME" > $LOGFILENAME
fi

rm $TEMPWRITEFILE > /dev/null

This file rnmucdr/ednms05/withold_accts/template/FNBDPCF2 content

[files]
LBTNRR01=./bt/FNBBTBACT.dp;
LDP03R01=/nbfprod01/work/${SYSAPPLID}/dp/FNBDPFMT;
LDP01W01=/nbfprod01/work/${SYSAPPLID}/dp/TESTFILE;
LDF0TR01=/nbfprod01/work/${SYSAPPLID}/dp/FNBDPFMT_TRN;
LDF0AR01=/nbfprod01/work/${SYSAPPLID}/dp/FNBDPFMT_ADR;
LDF0MR01=/nbfprod01/work/${SYSAPPLID}/dp/FNBDPFMT_MSG;
LDP0RW01=/nbfprod01/work/${SYSAPPLID}/dp/FNBDPINF;
LDP0RR01=/nbfprod01/work/${SYSAPPLID}/dp/FNBDPINF;
LDP0CW01=/nbfprod01/work/${SYSAPPLID}/dp/FNBCYRPT;

[databases]
D0001=$DB,$DB_USERID,$DB_PASSWORD,,ORACLE;
D0000=$DB,$DB_USERID,$DB_PASSWORD,,ORACLE;
D0003=$DB,$DB_USERID,$DB_PASSWORD,,ORACLE;

[environment]

[parameters]
LDPTEMP2=/nbfprod01/work/${SYSAPPLID}/dp/TEMP2;
LDPTEMP3=/nbfprod01/work/${SYSAPPLID}/dp/TEMP3;
NORMALBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod10;
ERRORBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod20;
MANDIVBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod30;
FOREIGNBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod40;
FINALBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod50;
FINALCRAMTFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod80;
HIGHBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.HIGH;
BINSFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/BINS_FILE;
EXCEPTIONFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/EXCEP_BILL;
NOPRINTFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod70;
FR52_FINALBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod52;
FIN31BILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod31;
FR82_FINALBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod82;
HIGHBILLFILENAME21=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod21;
SYSDIVBILLFILENAME=/nbfprod01/work/${SYSAPPLID}/dp/${DP_FILE_SYS_ID}bp${BILLDATEF1}.kod90;
HIGHAMOUNT=250000;
BINPAGELIMIT=10000;
REPLACESTRING=+++++;
START_FPGMSG_LINE=16;
START_FPGMSG_POSN=68;
MSGLINEWIDTH=23;
MSGLINELENGTH=30;
LEAVESPACE=YES;
SKIP_IND_FIELD=bfi;
SKIP_IND_VALUE=MSGBFIFP;
SAVING_BFI=XX_PKJSM;
SAVING_MSG=Tahniah! Anda telah mendapat penjimatan sebanyak;
SAVING_FMT=999,999,999.00;
SAVING_TYPE=M;
PRICING_MSG= ;
PG_BRK_POS=1;
OMR_POS=2;
OMR_DEF=-;
OMR_LEN=1;
NIPSON_POS=3;
NIPSON_LEN=2;
LINE_LEN=90;
LINE_IN_PAGE=79;
SECHDR_DEF=SH;
SECFTR_DEF=SF;
HDR_DEF=H;
DTL_DEF=D;
COLHDR_DEF=CH;
NUMBER_POS=74;
SMALLCASE_BILLMONTH_ACCTCAT="T,C,I";
ACCT_CAT=T;
MODULE_ID=DP;
TOT_INST=1;
PCCB_IND_BFI=ADR01;
CUR_CHRG_BFI=BFICC001;
DUE_AMT_BFI=BFIDU001;
TXNRECTYPE=OTR;
DPSORTCOMD=./configs/dp_sorter_T.pbm;
RESI_ERRBILLAMOUNT=5000;
BUSI_ERRBILLAMOUNT=250000;
BILL_DATE=$BILLDATEF2;
CYBERPRINT_REPORT=N;

How to write this to file name test

i want replace all the variables, the i want the file as it is,i dunt want the [database] and [parameters] join in one sentences
can u help me,i want go to new line after found new line but now it go to new line after found ;
can you help me thanks
[/code]

DB=abcserv
DB_USERID=ad
DB_PASSWORD=devfl
SYSAPPLID=NTEL
DP_FILE_SYS_ID=Cas
BILLDATEF1=010107
BILLDATEF2=01/01/07
sed -e "s/\${SYSAPPLID}/${SYSAPPLID}/" -e "s/\${BILLDATEF1}/${BILLDATEF1}/" rnmucdr/ednms05/withold_accts/template/FNBDPCF2 >test

Similarly use substitute command for other variables. Make sure that all the variables in input file is enclosed in braces

is there any other way like tht day you teach me using eval
because if some other user edit the template files there, i need they only put variable and not the command line
maybe they add ${BILL_PERIOD} in templete
so this excuteable file they just need to add
BILL_PERIOD=01
something like that
can i do like that,so if we know how to get to new line for that variable i think problem solve..

$ cat file
DB=abcserv
DB_USERID=ad
DB_PASSWORD=devfl
SYSAPPLID=NTEL
DP_FILE_SYS_ID=Cas
BILLDATEF1=010107
BILLDATEF2=01/01/07

Keep your variables in a separate file and use the following code to create sed command. Make sure that variables in rnmucdr/ednms05/withold_accts/template/FNBDPCF2 are enclosed in braces

str="sed '"
while IFS="=" read x y
do
 str=${str}"s,\${$x},${y},;"
done < file
str=${str}"' rnmucdr/ednms05/withold_accts/template/FNBDPCF2 >test"
echo ${str} | sh

Hello Everybody,

I dun't know whether you all knew it or not.....

any sqls can be called simply by putting @ once you get inside the sqlplus area. as below,

sqlplus -s $USERID/$PWD@$SCHEMA > $OUTPUTFILENAME << EOF
WHENEVER SQLERROR EXIT 1
@$SCRIPT
EOF

Of coz we knew that...