Awk -simple pattern matching


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk -simple pattern matching
# 1  
Old 09-13-2010
Awk -simple pattern matching

Find bumblebee and Megatron patterns (input2) in input1.
If it is + read input1 patterns from Left to Right
if it is - read input1 patterns from Right to Left
Y= any letter (A/B/C/D)


input1
Code:
c1	100	120	TF01_X1	+	AABDDAAABDDBCADBDABC	
c2	100	120	TF02_X2	-	AABDDAAABDDBCBACDBBC
c3	100	120	TF03_X2	+	AABDDAAABDDBCBADCBBC
c4	100	120	TF03_X3	+	AABDCAAABDDBCBADCBBC

input2
Code:
bumblebee	DBCADB	
Megatron	YDCY

output
Code:
c1	111	116	TF01_X1	+	bumblebee	DBCADB	AABDDAAABDDBCADBDABC
c2	118	115	TF01_X2	-	Megatron	ACDB	AABDDAAABDDBCBACDBBC
c3	115	118	TF01_X2	+	Megatron	ADCB	AABDDAAABDDBCBADCBBC
c4	100	120	TF03_X3	+	Megatron	BDCA	AABDCAAABDDBCBADCBBC
c4	100	120	TF03_X3	+	Megatron	ADCB	AABDCAAABDDBCBADCBBC

# 2  
Old 09-14-2010
Is this homework? If so please read https://www.unix.com/homework-coursew...ons-forum.html

If not, what have you tried so far. Please post code and any errors.
# 3  
Old 09-14-2010
hi

It is not.
I'm new to shell scripting.
I tried to grep specific patterns before I posted. I was successful with individual specific pattern extracting. But I want the same in a global scale.

My grep commnds


Code:
 grep "DC" input1

c3 100 120 TF03_X2 + AABDDAAABDDBCBADCBBC
c4 100 120 TF03_X3 + AABDCAAABDDBCBADCBBC
Code:
grep "DBCA" input1

c1 100 120 TF01_X1 + AABDDAAABDDBCADBDABC

And my awk commnd for bumblebee is

Code:
 awk '{ if ($5 == "+") print $0}' input1| grep DBCADB | awk '{print $1,"\t",$2,"\t",$3,"\t",$4,"\t",$5,"\t","DBCADB",$6}'

output
Code:
c1       100     120     TF01_X1         +       DBCADB AABDDAAABDDBCADBDABC

I can write a code same for Megatron but it is becoming complex because I have many patterns.

Thanx for your time

---------- Post updated 09-14-10 at 12:43 AM ---------- Previous update was 09-13-10 at 10:10 PM ----------

Code:
 awk -F'\t'  '{ for(i=1; i<=NF; i++) if($5 == "+" && $6 ~/DC/) {  print $0,"\t", "YDCY";} else if ($5 == "-" && $6 ~/CD/) { print $0,"\t", "YCDY";} else if ($6 ~/DBCADB/) {print $0,"DBCADB";} }' input1 | awk '!a[$0]++'


c1 100 120 TF01_X1 + AABDDAAABDDBCADBDABC DBCADB
c2 100 120 TF02_X2 - AABDDAAABDDBCBACDBBC YCDY
c3 100 120 TF03_X2 + AABDDAAABDDBCBADCBBC YDCY
c4 100 120 TF03_X3 + AABDCAAABDDBCBADCBBC YDCY

---------- Post updated at 03:44 AM ---------- Previous update was at 12:43 AM ----------

Here is my tried code. Every thing is fine except mnual work. and a small bug (Could n't able to pick up duplicate expression (CD))


input1
Code:
c1       100     120     TF01_X1         +       AABDDAAABDDBCADBDABC
c2       100     120     TF02_X2         -       AABDDAAABDDBCBACDBBC
c3       100     120     TF03_X2         +       AABDDAAABDDBCBACDBBC
c4       100     120     TF03_X3         +       AABCDAAABDDBCBACDBBC

Script
Code:
awk '{ for(i=1; i<=NF; i++)  if($5 == "+" && $6 ~/CD/)  {  print index($6, "CD"),"\t",length($6),"\t",$0,"\t", "YCDY";}  else if ($5 == "-" && $6 ~/CD/)  { print index($6,"CD"),"\t",length($6),"\t",$0,"\t", "YDCY";}  else if ($5 == "+" && $6 ~/DBCADB/)  { print index($6,"DBCADB"),"\t",length($6),"\t",$0,"\t", "DBCADB";}  else if ($5 == "-" && $6 ~/DBCADB/)  { print index($6,"DBCADB"),"\t",length($6),"\t",$0,"\t", "BDACBD";}  }' input1 |awk '{if ($7 == "+" && $9 == "DBCADB") print $3,"\t",$4+$1,"\t",($4+$1)+6,"\t",$0; else if ( $7 == "-" && $9 == "BDACBD") print $3,"\t", ($4+$1)-6,"\t",$4+$1,"\t",$0; else if ($7 == "+" && $9 == "YCDY") print $3,"\t",($4+$1)-2,"\t",($4+$1)+2,"\t",$0; else if ($7 == "-" && $9 == "YDCY") print $3,"\t",($4+$1)-2,"\t",($4+$1)+2,"\t",$0}'|awk '!a[$0]++'|awk '{print $1,"\t",$2,"\t",$3,"\t", $9,"\t",$10,"\t",$12,"\t",$11}'

output
Code:
c1       111     117     TF01_X1         +       DBCADB          AABDDAAABDDBCADBDABC
c2       114     118     TF02_X2         -       YDCY    AABDDAAABDDBCBACDBBC
c3       114     118     TF03_X2         +       YCDY    AABDDAAABDDBCBACDBBC
c4       102     106     TF03_X3         +       YCDY    AABCDAAABDDBCBACDBBC


Last edited by bumblebee_2010; 09-14-2010 at 12:16 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk pattern matching

I have two files, want to compare file1 data with file2 second column and print line which are not matching. Need help in matching the pattern, file2 second column number can be leading 0 or 00 or 000. Example: file1 1 2 3 file2 a,0001 b,02 c,000 d,01 e,2 f,0005 Expected output:... (20 Replies)
Discussion started by: vegasluxor
20 Replies

2. Shell Programming and Scripting

Pattern matching using awk

Hi I am trying to find a pattern match with column one containing 3 numbers. input file tmp.lst abcd456|1|23123|123123|23423 kumadff|a|dadfadf|adfd|adfadfadf xxxd999|d|adfdfs|adfadf|adfdasfadf admin|a|dafdf|adfadfa||| output file tmp4.lst abcd456|1|23123|123123|23423... (3 Replies)
Discussion started by: vamsekumar
3 Replies

3. Shell Programming and Scripting

awk pattern matching name in records

Hi, I'm very new to these forums. I was wondering if someone could help an AWK beginner with a pattern matching an actor to his appearance in movies, which would be stored as records. Let's say we have a database of 4 movies (each movie a record with name, studio + year, and actor fields with... (2 Replies)
Discussion started by: Jill Ceke
2 Replies

4. Shell Programming and Scripting

awk pattern matching

can somebody provide me with some ksh code that will return true if my the contents in my variable match anyone of these strings ORA|ERROR|SP2 variable="Error:ORA-01017: Invalid username/password; logon denied\nSP2-0640:Not connected" I tried this and it does not seem to work for me ... (3 Replies)
Discussion started by: BeefStu
3 Replies

5. Shell Programming and Scripting

awk pattern matching on ssh

Hi folks, i am trying to filer some log file using awk command. When i try it on remote server, it can show the result. awk '$1=="2012-10-29" && $4==17353' somelogfile But when i try to execute it from ssh, it cannot show the same result. ssh someserver "awk '\$1=="2012-10-28" &&... (7 Replies)
Discussion started by: howielim
7 Replies

6. Shell Programming and Scripting

AWK pattern matching on loop

Hi, I am still a beginner on shell scripting so please bear with me. What i am trying to do is filter my logfile based on some ID on field 24 which is defined in array. The filter result output will be moved to my log folder with the same name. The problem is when not using loop, this command... (2 Replies)
Discussion started by: howielim
2 Replies

7. UNIX for Dummies Questions & Answers

awk - pattern matching?

Hello all, I am trying to sort thru a database and print all the customers whose first names are only four characters. I just want to pull the first name only from the database. the database records appear like this in file: Mike Harrington:(510) 548-1278:250:100:175; first is name Mike... (4 Replies)
Discussion started by: citizencro
4 Replies

8. Shell Programming and Scripting

AWK pattern matching

Hi, How can I tell awk to print all lines/columns if column number 5 contains the word Monday? I have tried nawk -F, '$5==Monday' OFS=, myfile > outputfile but that doesn't work (I am a newb!!) Thanks, (7 Replies)
Discussion started by: keenboy100
7 Replies

9. Shell Programming and Scripting

pattern matching using awk.

Dear Team, How do we match two patterns on the same line using awk?Are there any logical operators which i could use in awk like awk '\gokul && chennai\' <filename> Eg: Input file: gokul,10/11/1986,coimbatore. gokul,10/11/1986,bangalore. gokul,12/04/2008,chennai.... (2 Replies)
Discussion started by: gokulj
2 Replies

10. Shell Programming and Scripting

AWK pattern matching, first and last

In a nutshell, I need to work out how to return the last matching pattern from an awk //,// search. I can bring back the first, but am unsure how to obtain the last, and a simple tail won't work as the match could be over multiple lines. Secondly I would like some way of pattern matching, a... (10 Replies)
Discussion started by: smb_uk
10 Replies
Login or Register to Ask a Question