Help with regular expression


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with regular expression
# 8  
Old 07-04-2014
Hi Don

Thanks for your response

We have input file like below

Code:
MONDAY###SELECT BLAH,BLAH,... FROM TABSCHEMA1.TABNAME1 WITH UR
 SUNDAY###SELECT BLAH,BLAH,... FROM TABSCHEMA2.TABNAME2 WHERE BLAH=1 WITH UR

Like

Code:
 cat <File name> | awk -F###<......>
 if Day = Monday
 then
 We need to get  TABSCHEMA1 and TABNAME1 in separate variables
 Later
 We use those variable again in other statement
 fi

we are doing an awk on each line and inside that awk , we are checking Day Condition and if that Matches we need to get TABSCHEMA1.TABNAME1 and TABSCHEMA2.TABNAME2

Thanks

Last edited by Don Cragun; 07-04-2014 at 06:11 PM.. Reason: Add CODE tags.
# 9  
Old 07-04-2014
Quote:
Originally Posted by mallak
Hi Don

Thanks for your response

We have input file like below

Code:
MONDAY###SELECT BLAH,BLAH,... FROM TABSCHEMA1.TABNAME1 WITH UR
 SUNDAY###SELECT BLAH,BLAH,... FROM TABSCHEMA2.TABNAME2 WHERE BLAH=1 WITH UR

Like

Code:
 cat <File name> | awk -F###<......>
 if Day = Monday
 then
 We need to get  TABSCHEMA1 and TABNAME1 in separate variables
 Later
 We use those variable again in other statement
 fi

we are doing an awk on each line and inside that awk , we are checking Day Condition and if that Matches we need to get TABSCHEMA1.TABNAME1 and TABSCHEMA2.TABNAME2

Thanks
Please stop giving us one tiny piece of what you're trying to do and tell us ALL of what you're trying to do. Help us help you!
Code:
awk -F 'FROM ' '
/MONDAY###/ && NF > 1 {
	if(match($2, /[.][^ ]* /)) {
		scheme = substr($2, 1, RSTART - 1)
		name = substr($2, RSTART + 1, RLENGTH - 1)
		printf("Line %d: scheme=%s, name=%s\n", NR, scheme, name)
	}
}' "input file"

does everything you've shown us so far, producing the output:
Code:
Line 1: scheme=TABSCHEMA1, name=TABNAME1

from your sample input file.
This User Gave Thanks to Don Cragun For This Post:
# 10  
Old 07-04-2014
That's not particularly clear, I'm afraid.
Code:
 cat <File name> | awk -F###<......>
 if Day = Monday
 then
 We need to get  TABSCHEMA1 and TABNAME1 in separate variables
 Later
 We use those variable again in other statement
 fi

Which parts of this are actually in the awk script?

Do you need the schema and table names only inside awk, or are you using them later in the shell script? Does your awk script need to produce anything apart from the table/schema names?
This User Gave Thanks to CarloM For This Post:
# 11  
Old 07-05-2014
Another way in Perl language. Just for alternative solution,

Code:
#!/usr/bin/perl -w
# Usage: perl regex.pl file.log
use strict;

my $file = shift;
my $fh = undef;

open ($fh, '<', $file) or die $!;

while (<$fh>)
{
 chomp;
 print "$1\n" if ($_ =~ /.*?FROM\s+(\S+)\s+.*/) 
}

__DATA__
SELECT BLAH,BLAH,... FROM TABSCHEMA1.TABSCHEMA1 WITH UR
SELECT BLAH,BLAH,... FROM TABSCHEMA2.TABSCHEMA2 WHERE BLAH=1 WITH UR

__RESULT__
TABSCHEMA1.TABSCHEMA1
TABSCHEMA2.TABSCHEMA2

This User Gave Thanks to askari For This Post:
# 12  
Old 07-05-2014
My SINCERE Thanks to in2nix4life and Don for their valuable suggestions that helped me to complete the code and get the desired results.

I am thankful to all other members and i hope my post helps others to fix their code.

Highly Appreciate the Forum Help.
Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regular expression

I would like to extract "JDBC Thin Client" from (PROGRAM=JDBC Thin Client); and "C:\Python26\python.exe" from (PROGRAM=C:\Python26\python.exe); "txm_v_awsrf_db.pr" from (PROGRAM=txm_v_awsrf_db.pr). if input line like "(PROGRAM=)", it return unknown. Would you help suggest a regular... (4 Replies)
Discussion started by: cstsang
4 Replies

2. Shell Programming and Scripting

Regular expression

Can someone please explain me what does this mean? ^{1,50}$ (1 Reply)
Discussion started by: Anupam_Halder
1 Replies

3. UNIX for Dummies Questions & Answers

Regular expression help

Hi, I am quite knew to scripting and I am trying to get a regular expression to work to check that a user enters a valid version number such as 1 or 1.1 or 12.3 etc. I dont seem to be able to get it to work as it picks up versions such as 1.......2. I only want it to work with a single dot.... (12 Replies)
Discussion started by: frodo61
12 Replies

4. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

5. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

6. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

7. UNIX for Dummies Questions & Answers

ls with regular expression

I currently list and sort all the files in a directory which begin with an Upper Case C and end with the extension '#finished#'. Here is the command I use: ls -tr $currentDir/*.#finished# what i need to do now is list all the files in a directory that begin with upper case C and end... (3 Replies)
Discussion started by: rkgudde
3 Replies

8. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

9. Programming

What does the regular expression ['(^[^~]+~).*'] mean?

What does the regular expression +~).*'] mean while using it with regexec.When the string "RCHNUSNT35C~rs07/ASM-RS07" is used with the regular expression +~).*'] regexec gives an error. I know what regexec does,but i do not understand what this expression means wrt to this string... any help... (2 Replies)
Discussion started by: anupamar
2 Replies

10. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies
Login or Register to Ask a Question