Shell script using loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell script using loop
# 1  
Old 07-08-2010
Question Shell script using loop

Hi everyone,

I have n number of data in my file "temp" in following order.In each line table_name and
column_name are different.input data is in same format each query in three lines.

Code:
ALTER TABLE table_name
ADD  ( column_name1         VARCHAR2(10),
       column_name2  VARCHAR2(70)  );

ALTER TABLE table_name
ADD  ( column_name1         VARCHAR2(10),
       column_name2  VARCHAR2(70)  );

ALTER TABLE table_name
ADD  ( column_name1         VARCHAR2(10),
       column_name2  VARCHAR2(70)  );

I need to pick the table name from each line one by one and check that
this name exists in my another file "name" or not.
If the table name exists in the file "name" then i need to pick the column1_name,
column2_name..... and their data type which are after ADD.
In this way need to do above action to each data in file and stor them in a file
in the following format:

Code:
TABLE_NAME   COLUMN_NAME  DATATYPE


i have used the code

Code:
while read folder
folder=`awk '/ALTER/ { print $3; } ' data.txt`
do
  cd $folder
  echo "in" > test
  cd ..
  i=$[$i+1]
done < data.txt

but for this i m getting only one table_name with error.

can anybody help me with the script.I want my script in SH
Please help me with above asap.

Last edited by alisha; 07-08-2010 at 02:56 PM.. Reason: Code tags, please...
# 2  
Old 07-08-2010
Something like that ?
Code:
awk '
NR==FNR { tbl[$1]++ }
/ALTER TABLE/ {
   tbl_name = $3;
   getcols = (tbl_name in tbl);
   next;
}
! getcols { next }
/^ADD/,/;[[:space:]]*$/ {
   f = ($1 ~ /^ADD/ ? 3 : 1);
   printf "%-12s %-12s %s\n", tbl_name, $f, $(f+1);
}

' alisha.nam alisha.tmp

"temp" file (alisha.tmp):
Code:
awk '
NR==FNR { tbl[$1]++ }
/ALTER TABLE/ {
   tbl_name = $3;
   getcols = (tbl_name in tbl);
   next;
}
! getcols { next }
/^ADD/,/;[[:space:]]*$/ {
   f = ($1 ~ /^ADD/ ? 3 : 1);
   printf "%-12s %-12s %s\n", tbl_name, $f, $(f+1);
}

' alisha.nam alisha.tmp

"name" file (alisha.nam):
Code:
tbla
tblc

Output:
Code:
tbla         cola1        VARCHAR2(11),
tbla         cola2        VARCHAR2(12)
tblc         colc1        VARCHAR2(31),
tblc         colc2        VARCHAR2(32)
tblc         colc3        VARCHAR2(33)

Jean-Pierre.
# 3  
Old 07-09-2010
hi Aigles,
thanks for your reply but i am getting errot while executing your code.please help me with that.

Code:
awk '
NR==FNR { tbl[$1]++ }
/ALTER TABLE/ {
   tbl_name = $3;
   getcols = (tbl_name in tbl);
   next;
}
! getcols { next }
/^ADD/,/;[[:space:]]*$/ {
   f = ($1 ~ /^ADD/ ? 3 : 1);
   printf &quot;%-12s %-12s %s\n&quot;, tbl_name, $f, $(f+1);
}
 
' table.name data.txt

output:
Code:
awk: syntax error near line 5
awk: illegal statement near line 5
awk: syntax error near line 8
awk: bailing out near line 8



---------- Post updated at 02:21 AM ---------- Previous update was at 01:47 AM ----------

hi
i have searched for the problem.I hink

code
Code:
getcols = (tbl_name in tbl);

is troubling.
can you explain me this line.

Last edited by pludi; 07-09-2010 at 08:15 AM.. Reason: code tags, please...
# 4  
Old 07-09-2010
use nawk or /usr/xpg4/bin/awk.
# 5  
Old 07-09-2010
I think the problem is due to the below line:

Code:
 
printf &quot;%-12s %-12s %s\n&quot;, tbl_name, $f, $(f+1);

This line should be:

Code:
 
printf "%-12s %-12s %s\n", tbl_name, $f, $(f+1);

I tried this and it is working. Hope this helps.
# 6  
Old 07-09-2010
hi its not working with nawk

---------- Post updated at 04:11 AM ---------- Previous update was at 04:01 AM ----------

hi Gathrit

I have tried it but still the same problem

Code:
awk '
NR==FNR { tbl[$1]++ }
/ALTER TABLE/ {
   tbl_name = $3;
   getcols = (tbl_name in tbl);
   next;
}
! getcols { next }
/^ADD/,/;[[:space:]]*$/ {
   f = ($1 ~ /^ADD/ ? 3 : 1);
   printf "%-12s %-12s %s\n", tbl_name, $f, $(f+1);
}


' table.name data.txt

o/p
Code:
awk: syntax error near line 5
awk: illegal statement near line 5
awk: syntax error near line 8
awk: bailing out near line 8

i think the problem is in following codes.

1) getcols = (tbl_name in tbl);
2)! getcols { next }

can anyone help me with this.

---------- Post updated at 06:07 AM ---------- Previous update was at 04:11 AM ----------

hi Aigles,
Will you please give me the description of the code that you had sent me.

Moderator's Comments:
Mod Comment Use code tags please - you got a PM how to do it.

Last edited by zaxxon; 07-09-2010 at 08:11 AM.. Reason: code tags
# 7  
Old 07-09-2010
Try :
Code:
   getcols = (tbl_name in tbl ? 1 : 0);

Jean-Pierre.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script use two variable in for loop

I want to create a shell script to add a user and modify its comment field mentioned in a file. 1. File value:- username comment field value xyz123 xyztesting abc123 abctesting def123 deftesting 2. i am using below loop to create user... (2 Replies)
Discussion started by: Anil
2 Replies

2. Shell Programming and Scripting

Speed up the loop in shell script

Hi I have written a shell script which will test 300 to 500 IPs to find which are pinging and which are not pinging. the script which give output as 10.x.x.x is pining 10.x.x.x. is not pining - - - 10.x.x.x is pining like above. But, this script is taking... (6 Replies)
Discussion started by: kumar85shiv
6 Replies

3. Shell Programming and Scripting

Loop in shell script

Hi Friends, I have a file. the content is as below: file1: /A/B/C/abc.txt 2013-07-28 13:50:00,2013-07-31 01:00:00,5,710 /A/B/C/xyz.txt 2011-09-21 18:30:00,2013-07-30 06:15:00,15,65135 2009-11-09 18:00:00,2011-09-02 09:00:00,5,12345 2013-07-28 13:50:00,2013-07-31 01:00:00,5,710 ... (2 Replies)
Discussion started by: vsachan
2 Replies

4. Shell Programming and Scripting

Help with the For loop shell script

Hi, I have multiple files in a directory. Each file will have a header.I have to check if any of the files has 0 rows other than the header then I have to delete the files. Here “ Empty file” in my case means a file has header information but no data. I have to delete such files. If the file... (2 Replies)
Discussion started by: ganesnar
2 Replies

5. Shell Programming and Scripting

Avoiding For Loop in Shell Script

I am looking to a solution to the following problem. I have a very large file that looks something like this: Each group of three numbers on each line are three probabilities that sum to one. I want to output the maximum for each group of three. So desired output would be: or... (6 Replies)
Discussion started by: hydrabane
6 Replies

6. Shell Programming and Scripting

Help with IF statement with loop Shell Script

Hello I am very new to shell and I bought some books and trying to learn it. I started trying to write a script that will take a number and count it down to 1 with commas in between. This number can only be one argument. If lower than one or higher than one argument it sends an error message. ... (4 Replies)
Discussion started by: zero3ree
4 Replies

7. Shell Programming and Scripting

while loop problem in c shell script

Hi all, i write a script c shell set i = 1 while ( $i <= $#array ) echo "$array" @ i++ end i want to set it to i = i +2 in that statement . Can anybody help me? ---------- Post updated at 02:46 PM ---------- Previous update was at 02:35 PM ---------- anybody not how to solve it??? (2 Replies)
Discussion started by: proghack
2 Replies

8. Shell Programming and Scripting

Loop in shell script

Dear experts, i am quite new to shell script please any one can help me in this regard i would like write a script which takes input in the form >./Test.sh a,10,b,20,c,30... in this way i can give input in any number which is not constant in the end through loop i want to... (3 Replies)
Discussion started by: vin_pll
3 Replies

9. Shell Programming and Scripting

Help with loop in a shell script

I just want to write a little script, that reads the lines from a file, echos somthing in a new tmp.file and then do some commands whith the tmp.files. while read -r line do echo "TEST=" > tmp.$$ echo "$line" >> tmp.$$ any_command < tmp.$$ done < $INPUTFILE But I think I have to... (2 Replies)
Discussion started by: elifchen
2 Replies

10. Shell Programming and Scripting

If then else loop in Shell script

Hi Following is the code . When I give input as Bangalore,its dospalying Welcome to Hitech City. But say , if I select Delhi or US, its not displaying the corresponding message. Its still says Welcome to Hitech City. Seems that it not entering in the elif part. Please suggest. #!... (4 Replies)
Discussion started by: pankajkrmishra
4 Replies
Login or Register to Ask a Question