Match strings in 2 different files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Match strings in 2 different files
# 8  
Old 12-13-2013
Hi,

sorry for the confusion. Below is another simple sample from my data:-

file1
Quote:
f07270 lololol fff
f12730 gggddd dddkkrr mmm
q5548d llldjjflss fdgfdgd ffsdss fdfsfsf

file2
Quote:
%f07270 APSLH bl%alalalalallaadsdsfdfdfdgsgfsshhhhddddddddddhd234@678
dffffffffffgggggggggggggrrrrrrrrrrrrrwwwwww333r22356676dddddassfssfsfrdd
ujhjhkjkuuuuuuuuu2228888fddddddddddddddddererererer30
%k55454 wwdsfsflsdkflsklfkslfklsk;dks;dlk;sald;slf;sk;fkls;fsdsjf5sds5%djsj3
skfjkdf;sf;sl;dfls;ldf;sl;fsfjidf
%q5548d alalalaaaaaaaaaaaaaaaa(aaaaaa)faagaaaaadddddddddddddd%68dd
ddddddddddddddd
I bold the matched ids. the output should be all the data in file2 where the id (the first 5 char after "%") matches id in file1 as follows:

file3
Quote:
%f07270 APSLH bl%alalalalallaadsdsfdfdfdgsgfsshhhhddddddddddhd234@678
dffffffffffgggggggggggggrrrrrrrrrrrrrwwwwww333r22356676dddddassfssfsfrdd
ujhjhkjkuuuuuuuuu2228888fddddddddddddddddererererer30
%q5548d alalalaaaaaaaaaaaaaaaa(aaaaaa)faagaaaaadddddddddddddd%68dd
ddddddddddddddd
in other words, i have huge data in file2 with multiple lines which could be continuous and separated by "\n". Therefore, i need to have a code that will print from the first char started by "%" and stop when it reaches the next "%", once the id matches with file1 ids. Thanks

Last edited by redse171; 12-13-2013 at 11:29 PM.. Reason: typo
# 9  
Old 12-14-2013
Try : it works for input in#8
Code:
$ awk 'FNR == NR{A[$1]; next}/^\%/{f = (substr($1,2,6) in A) ? 1 : 0}f' file1 file2

%f07270 APSLH bl%alalalalallaadsdsfdfdfdgsgfsshhhhddddddddddhd234@678
dffffffffffgggggggggggggrrrrrrrrrrrrrwwwwww333r22356676dddddassfssfsfrdd
ujhjhkjkuuuuuuuuu2228888fddddddddddddddddererererer30
%q5548d alalalaaaaaaaaaaaaaaaa(aaaaaa)faagaaaaadddddddddddddd%68dd
ddddddddddddddd

This User Gave Thanks to Akshay Hegde For This Post:
# 10  
Old 12-14-2013
Hi Akshay,

Your codes work perfect!!! Thanks so much...i don't understand some of them. can u pls explain the one that i color in red?
Code:
awk 'FNR == NR{A[$1]; next}/^\%/{f = (substr($1,2,6) in A) ? 1 : 0}f' file1 file2

thanks... Smilie

Last edited by Scrutinizer; 12-14-2013 at 03:52 AM.. Reason: code tags
# 11  
Old 12-14-2013
Quote:
Originally Posted by redse171
Hi Akshay,

Your codes work perfect!!! Thanks so much...i don't understand some of them. can u pls explain the one that i color in red?
awk 'FNR == NR{A[$1]; next}/^\%/{f = (substr($1,2,6) in A) ? 1 : 0}f' file1 file2

thanks... Smilie
f = (substr($1,2,6) in A) ? 1 : 0 --> if 2nd char onwards, 6 six char from field 1 of file2 is found in array A of file 1 then, f will be set to 1 otherwise 0.

1--> true and,
0 --> false

whenever its true, that is f=1 it will print line.
This User Gave Thanks to Akshay Hegde For This Post:
# 12  
Old 12-14-2013
Hi,

Got it.. thanks a lot!! Smilie)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Match patterns between two files and extract certain range of strings

Hi, I need help to match patterns from between two different files and extract region of strings. inputfile1.fa >l-WR24-1:1 GCCGGCGTCGCGGTTGCTCGCGCTCTGGGCGCTGGCGGCTGTGGCTCTACCCGGCTCCGG GGCGGAGGGCGACGGCGGGTGGTGAGCGGCCCGGGAGGGGCCGGGCGGTGGGGTCACGTG... (4 Replies)
Discussion started by: bunny_merah19
4 Replies

2. UNIX for Beginners Questions & Answers

Use strings from nth field from one file to match strings in entire line in another file, awk

I cannot seem to get what should be a simple awk one-liner to work correctly and cannot figure out why. I would like to use patterns from a specific field in one file as regex to search for matching strings in the entire line ($0) of another file. I would like to output the lines of File2 which... (1 Reply)
Discussion started by: jvoot
1 Replies

3. UNIX for Beginners Questions & Answers

Match Strings between two files, print portions of each file together when matched ([g]awk)

I have two files and desire to use the strings from $1 of file 1 (file1.txt) as search criteria to find matches in $2 of file 2 (file2.txt). If matches are found I want to output the entire line of file 2 (file2.txt) followed by fields $2-$11 of file 1 (file1.txt). I can find the matches, I cannot... (7 Replies)
Discussion started by: jvoot
7 Replies

4. UNIX for Beginners Questions & Answers

How to pass strings from a list of strings from another file and create multiple files?

Hello Everyone , Iam a newbie to shell programming and iam reaching out if anyone can help in this :- I have two files 1) Insert.txt 2) partition_list.txt insert.txt looks like this :- insert into emp1 partition (partition_name) (a1, b2, c4, s6, d8) select a1, b2, c4, (2 Replies)
Discussion started by: nubie2linux
2 Replies

5. Shell Programming and Scripting

Using awk to match strings and outputing their corresponding values

Hi I will appreciate it if you can help me out. I have a file that contains this data System Load: 3244 card: 1903 CPU: 6% card: 1904 CPU: 6% card: 1905 CPU: 28% card: 1906 CPU: 28% card: 1907 CPU: 36% card: 1908 CPU: 37% I need to manipulate and output this as system_load:3244... (2 Replies)
Discussion started by: kaf3773
2 Replies

6. Shell Programming and Scripting

Returning two lines if they both match strings

Hi I have a problem where I have a large amount of files that I need to scan and return a line and its following line, but only when the following line begins with a string. String one - line one must begin with 'Bill' String two - line two must begin with 'Jones'. If these two... (7 Replies)
Discussion started by: majormajormajor
7 Replies

7. UNIX for Dummies Questions & Answers

Grep help (match two strings one line)

Hello, Here I have some grep command which is not working correctly: cat file1.txt: apples Date: Sun, 24 Feb 2013 8:14:06 -0800 peaches melons cherry sky cloud green purple yellow cat file2.txt: apples Date peaches melons 0800 cherry sky cloud green purple black (2 Replies)
Discussion started by: holyearth
2 Replies

8. Shell Programming and Scripting

Match strings in two files and compare columns of both

Good Morning, I was wondering if anybody could tell me how to achieve the following, preferably with a little commenting for understanding. I have 2 files, each with multiple rows with multiple columns. I need to find each row where the value in column 1 of file 1 matches column 1... (10 Replies)
Discussion started by: GarciasMuffin
10 Replies

9. Shell Programming and Scripting

Parsing file to match strings

I have a file with the following format 12g data/datasets/cct 8g data/dataset/cct 10 g data/two 5g data/something_different 10g something_different 5g data/two is there a way to loop through this... (1 Reply)
Discussion started by: yawalias
1 Replies

10. UNIX for Dummies Questions & Answers

Regex in if-then-else statement to match strings

hello I want to do a pattern match for string in the if statement, but I am not sure how to use regex inside the if statement. I am looking for something like this: if {2,3} ]; then ..... .... ... fi (7 Replies)
Discussion started by: rakeshou
7 Replies
Login or Register to Ask a Question