Problem in awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem in awk
# 1  
Old 10-23-2008
Question Problem in awk

Hi, I have a file (abc1.dat) with first field as table names and second field as previous months count and 3rd field as current months count. There are about 40 tables names in the file. This is the script I've written to find the percentage deviation for the two months.

Code:
cat ${workdir}/abc1.dat|awk '{ 
i = 0 
if ( $2 > $3 ) 
	 {
	 diff = $2 - $3 
	 i = 1
	 pd = ((($2 - $3) / $3) * 100)
	 } 
else if ( $3 > $2 ) 
	 {
	 diff = $3 - $2 
	 i = 1
	 pd = ((($3 - $2) / $2) * 100) 
	 } 

bteq << !!

.run file /db/d/lib/logon.script;

.SET SIDETITLES ON;
.SET TITLEDASHES OFF;

UPDATE AB_TABLE_${YYYY}
SET PD_ABC=$pd 
WHERE MONTHLY_TABLE_NAME LIKE '$1';

.QUIT; 

!!


errpct = $2 * 0.05 
if ( (i == 1) && (diff > errpct) ) 
{ printf "%-30s %-30d %-30d\n", $1, $2, $3 }
}' >> ${logdir}/errortables.log

The abc1.dat file looks like this
Code:
DB_YYYYMM                              3200867     3212612
DB_MASTER_YYYYMM                  5635623     5653570
DB_II_YYYYMM                           3200104     3211480
DB_MM                                      5635623     5653570
DB_I_YYYYMM                            5331904     5353944
DB_RAW_YYYYMM                       5723946     5740122

The error its showing is in the awk.

awk: Syntax error near line 16
awk: illegal statement near line 16
awk: illegal statement near line 18
awk: Syntax error near line 18
awk: bailing out near line 18

Please help me to solve this problem.
Thanks,
RRVARMA
# 2  
Old 10-23-2008
Is this a typo o you are trying to mix shell and awk code?
You should remove the below lines from the awk code:

Code:
bteq << !!

.run file /db/d/lib/logon.script;

.SET SIDETITLES ON;
.SET TITLEDASHES OFF;

UPDATE AB_TABLE_${YYYY}
SET PD_ABC=$pd 
WHERE MONTHLY_TABLE_NAME LIKE '$1';

.QUIT; 

!!

# 3  
Old 10-23-2008
Thanks Radoulov, but how can i update the table..?? my intention is to update the table with those values for the corresponding table names. Please help.Smilie
# 4  
Old 10-23-2008
Build the SQL statements with the AWK print statement and pass them to your database. Don't try to run them inside AWK.
# 5  
Old 10-23-2008
But how to connect to the database in awk. can u help me with this as well.. please.. Smilie
# 6  
Old 10-23-2008
Sorry, I don't seem to know that particular database software (looking at your code above ...), perhaps someone else could help ...
# 7  
Old 10-23-2008
ok.. thank you very much for helping in knowing wat is the error atleast.. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk problem

Hi I have two columns and I would like to create a third column based on how many lines away from a value of 1 in column 2, for example I have 1,0 2,0 3,0 4,0 5,0 6,1 7,0 8,0 9,0 10,0 11,1 And I want an output (6 Replies)
Discussion started by: garethsays
6 Replies

2. Shell Programming and Scripting

awk problem

i have an email list in file.txt with comma separated line1 - FIELD1,pippo@gmail.com,darth@gmail.com line2 - FIELD2,pippo@gmail.com,darth@gmail.com,sampei@gmail.com output=(awk -F ',' -v var="$awkvar" '$1==var {print $2,$3,$4}' spreadsheet.txt)but awk delete some letters at the... (8 Replies)
Discussion started by: pasaico
8 Replies

3. Shell Programming and Scripting

awk problem - combining awk statements

i have a datafile that has several lines that look like this: 2,dataflow,Sun Mar 17 16:50:01 2013,1363539001,2990,excelsheet,660,mortar,660,4 using the following command: awk -F, '{$3=strftime("%a %b %d %T %Y,%s",$3)}1' OFS=, $DATAFILE | egrep -v "\-OLDISSUES," | ${AWK} "/${MONTH} ${DAY}... (7 Replies)
Discussion started by: SkySmart
7 Replies

4. UNIX for Dummies Questions & Answers

Little problem with AWK

I thought I had solved this problem but after testing the script I came to realize that it is not doing what I need. So, here it goes again. This is the code: awk '/\>/{F=$2; N=$3; split(FILENAME, A, "."); getline; x = ">"}{print ">" A"-" x++" "F" " N"\n" $0}' This is the input file: ... (5 Replies)
Discussion started by: Xterra
5 Replies

5. Shell Programming and Scripting

awk problem

Find the number of files with sizes > 100KB in /, /bin, /usr, /usr/bin and /usr/sbin directories and output them in a two column format with the name of the directory and the number of files. i tried with awk $>ls -lh | awk '/^-/ && $5 >= 100k {print $8 $5}' but it is not working pls tell... (3 Replies)
Discussion started by: abhikamune
3 Replies

6. Shell Programming and Scripting

Problem with awk awk: program limit exceeded: sprintf buffer size=1020

Hi I have many problems with a script. I have a script that formats a text file but always prints the same error when i try to execute it The code is that: { if (NF==17){ print $0 }else{ fields=NF; all=$0; while... (2 Replies)
Discussion started by: fate
2 Replies

7. Shell Programming and Scripting

Awk problem: How to express the single quote(') by using awk print function

Actually I got a list of file end with *.txt I want to use the same command apply to all the *.txt Thus I try to find out the fastest way to write those same command in a script and then want to let them run automatics. For example: I got the file below: file1.txt file2.txt file3.txt... (4 Replies)
Discussion started by: patrick87
4 Replies

8. Shell Programming and Scripting

problem using awk

Hi there every body I'm new to shell scripting and there is a problem facing me,, please look at the following piece of code: awk ' BEGIN{ FS="<assertion id=\1"; RS="<assertion id=\"2"}/<assertion id=\"1/{print FS$2 > "/home/ds2/test/output.txt"} ' filename all I wanna do is to... (6 Replies)
Discussion started by: senior_ahmed
6 Replies

9. Shell Programming and Scripting

Problem with AWK

Hi All, How can i store a value of the unix command executed in AWK with system command. devise=`cut -c1-3 dvgp.txt` I wrote this command in awk as awk'{ code= sprintf("devise=`cut -c1-3 dvgp.txt`"); system(code); }' Is this correct. can you please suggest me how the code can be... (1 Reply)
Discussion started by: krishna_gnv
1 Replies

10. UNIX for Dummies Questions & Answers

AWK Problem

Hi, I posted something here about this yesterday but I can't seem to find it. I needed help writting a script which would append a file with new lines after every so many charachters. Example: (my original flat file) L60 LETTER OF CREDIT 60 DAYS W00 ON RECEIPT WIRE TRANSFER W30 NET... (12 Replies)
Discussion started by: gseyforth
12 Replies
Login or Register to Ask a Question