script help

Hi

Below is the i/p of my file ,first read the 1st line of the file 'i.e:SET DBASE_TARGETTABLE TO 'XX_SW' and replace with
SET DBASE_TARGETTABLE TO 'XX_tW and read the last line 'i.e : .SET TARGETTABLE TO 'TABLE135044' and replce with i/p file name (If my i/p file name is mm_customer_info.txt ,replace with 'TABLE135044' TO 'customer_info').Any help should be appreciated

file.txt

.LOGON dn/up_load1,messwh08;

.SET DBASE_TARGETTABLE TO 'XX_SW';
.SET DBASE_WORKTABLE TO 'XX_SW';
.SET DBASE_ETTABLE TO 'XX_SW';
.SET DBASE_UVTABLE TO 'XX_SW';
.SET TARGETTABLE TO 'TABLE135044';

.BEGIN IMPORT MLOAD

Expecting o/p

.LOGON dn/up_load1,messwh08;

.SET DBASE_TARGETTABLE TO 'XX_tW';
.SET DBASE_WORKTABLE TO 'XX_SW';
.SET DBASE_ETTABLE TO 'XX_SW';
.SET DBASE_UVTABLE TO 'XX_SW';
.SET TARGETTABLE TO 'cutomer_info';

.BEGIN IMPORT MLOAD

Thanks,
MR

Have you tried a simple search-and-replace using sed?

Hi

The last line which is highlighted is dynamic value ,i need to pass i/p files as parameter and replace that value with my i/p file (If my i/p file name is mm_customer_info.txt ,replace with 'TABLE135044' TO 'customer_info')
.SET TARGETTABLE TO 'TABLE135044';

Thanks
MR

The filename mm_customer_info.txt is passing as a parameter in your script but how do you get the names of the variables: TABLE135044 and customer_info?

Regards

Hi

soryy for wrong info

Customer_info

.LOGTABLE LOGTABLE135044;
.LOGON r01gtdn/up_load1,messwh08;
.SET DBASE_TARGETTABLE TO 'DP_SBDW';
.SET DBASE_WORKTABLE TO 'DP_SBDW';
.SET DBASE_ETTABLE TO 'DP_SBDW';
.SET DBASE_UVTABLE TO 'DP_SBDW';
.SET TARGETTABLE TO 'TABLE135044';

.BEGIN IMPORT MLOAD

I wrote small script to replace TABLE135044 with input file name but its not working but it creates filename with new

a2.sh

file=$1
col=`awk NR==7 $1 |tr " " "\n" |tail -1`
echo "$col"
col1=`basename $1 |tr " " "\n" |tail -1`
echo "$col1"
sed -e 's/$col/$col1/g' $1 >$1.new
~

'TABLE135044';
Customer_info

a2.sh Customer_info

Thanks,
MR

You need to use double quotes around the sed script in order for the shell to interpolate the values of the variables $col and $col1; single quotes prevent interpolation. Anyhow, using awk to identify a replacement string for sed seems misdirected, when awk can do the replacement all by itself.

nawk -v IFS="'" -v basename="`basename "$1"`" '
  /SET DBASE_TARGETTABLE/ { $2 = "XX_tW" }
  /SET TARGETTABLE/ { $2 = basename }
1' "$1"

Hi Era,
Thanks a lot.Its working fine

Thanks
MR