Grep the lines in one file that are also in another


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep the lines in one file that are also in another
# 1  
Old 09-30-2014
Grep the lines in one file that are also in another

Hi all,
I have two files.
File A looks like this:

Code:
abkhasian	com|hum
accent	com|com|com|com|sta
acceptation	act|com|sta
adventures 	com|hum
adversity	com|hum|hum

and File B looks like this:

Code:
adventure
adventures
adversary
Adverse
adversity

I want to print those lines in File A in which the value in Column 1 also appears in File B.

Thus, the desired output would be to print those lines from File A:

Code:
adventures 	com|hum
adversity	com|hum|hum

I know there is a grep that does the opposite of that:
Code:
grep -F -x -v -f fileB fileA

But, is there a way to modify it so that I can reach my desired output?
Thank you
# 2  
Old 09-30-2014
Quote:
Originally Posted by owwow14
Hi all,
I have two files.
File A looks like this:

Code:
abkhasian    com|hum
accent    com|com|com|com|sta
acceptation    act|com|sta
adventures     com|hum
adversity    com|hum|hum

and File B looks like this:

Code:
adventure
adventures
adversary
Adverse
adversity

I want to print those lines in File A in which the value in Column 1 also appears in File B.

Thus, the desired output would be to print those lines from File A:

Code:
adventures     com|hum
adversity    com|hum|hum

I know there is a grep that does the opposite of that:
Code:
grep -F -x -v -f fileB fileA

But, is there a way to modify it so that I can reach my desired output?
Thank you
Hello owwow14,

Here is an awk approach for same.

Code:
awk 'FNR==NR{A[$1]=$0;next} ($1 in A){print A[$1]}' fileA fileB

Output will be as follows.

Code:
adventures      com|hum
adversity       com|hum|hum

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 3  
Old 09-30-2014
Code:
awk 'FILENAME=="FileA" {arr[$1]++; next}
       FILENAME=="FileB" {if($1 in arr) {print $1} }' FileA FileB >output

awk works well for this
# 4  
Old 09-30-2014
Code:
awk 'FNR==NR{A[$1];next}$1 in A' FileB FileA

# 5  
Old 09-30-2014
Quote:
Originally Posted by Akshay Hegde
Code:
awk 'FNR==NR{A[$1];next}$1 in A' FileB FileA

Hello Akshay,

I think you need to assign the value to A[$1]=$0. As it will give only the first column of fileB.
Code:
awk 'FNR==NR{A[$1]=$0;next} ($1 in A){print A[$1]}' fileA fileB

Thanks,
R. Singh
# 6  
Old 09-30-2014
Quote:
Originally Posted by RavinderSingh13
Hello Akshay,

I think you need to assign the value to A[$1]=$0. As it will give only the first column of fileB.
Code:
awk 'FNR==NR{A[$1]=$0;next} ($1 in A){print A[$1]}' fileA fileB

Thanks,
R. Singh
Could you please explain me Mr.RavinderSingh13 why I need to assign the value unnecessarily ? I read FileB first not FileA please look into the post.

Thanks by the way Smilie
This User Gave Thanks to Akshay Hegde For This Post:
# 7  
Old 09-30-2014
Quote:
Originally Posted by Akshay Hegde
Could you please explain me Mr.RavinderSingh13 why I need to assign the value unnecessarily ? I read FileB first not FileA please look into the post.
Hello Akshay,

I got your point. Thank you for explaining me same.

Thanks,
R. Singh

Last edited by RavinderSingh13; 09-30-2014 at 11:13 AM.. Reason: Deleted old contents and edited it as understood Akshay's point, thanks to Akshay
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep into a file + show following lines

Hi guys, This is probably very easy but I've no idea how to pull this out. Basically, I need to find errors into a very large logfile. When you grep the ID, the output is like this: +- Type: 799911 Code: Ret: 22728954 Mand: X Def: Des: UserDes: SeqNo: 2 +- Type: 799911 Code: Ret:... (5 Replies)
Discussion started by: Arkadia
5 Replies

2. Shell Programming and Scripting

Grep 3 lines from a file

I have file, test.txt UtranCellId MDN407WI1 administrativeState 1 (UNLOCKED) aseDlAdm 500 aseUlAdm 800 cellReserved 1 (NOT_RESERVED) dlCodeAdm ... (6 Replies)
Discussion started by: radius
6 Replies

3. UNIX for Dummies Questions & Answers

grep lines in a file that have only one field

Hello. How does one grep lines in a file that have only one field? AAA BBB CCC DDD AAA CCC Is is possible to grep "DDD" becuase it has only one field? Thanks. ---------- Post updated at 08:03 PM ---------- Previous update was at 07:25 PM ---------- I found it, thank you! awk 'NF... (2 Replies)
Discussion started by: jimmyf
2 Replies

4. UNIX for Dummies Questions & Answers

grep two lines from a file

Sample File abc xyz def abc ggh abc xyz I just created a sample file above to show what I need. I need to grep two lines. e.g abc and xyz(only if they are one after the other) so output would be abc xyz abc xyz (note abc followed by ggh line would not come out in the output). I... (9 Replies)
Discussion started by: ran123
9 Replies

5. Shell Programming and Scripting

Extracting specific lines of data from a file and related lines of data based on a grep value range?

Hi, I have one file, say file 1, that has data like below where 19900107 is the date, 19900107 12 144 129 0.7380047 19900108 12 168 129 0.3149017 19900109 12 192 129 3.2766666E-02 ... (3 Replies)
Discussion started by: Wynner
3 Replies

6. Shell Programming and Scripting

Grep between block of lines in a file

Hi Friends, I have a file which has many of the statements like below ******** MAKING > noun1 < cg_all statements statements statements ********* MAKING > noun2 < cg_all statements statements statements ********* MAKING > noun3 < all statements statements statements I would... (3 Replies)
Discussion started by: ganga.dharan
3 Replies

7. Shell Programming and Scripting

grep two lines in a file

Hi Everyone, I have 1.txt 1 6-6 3-3 word y f 6-6 word 5-5 4 5-5 word The output should be: 3-3 (8 Replies)
Discussion started by: jimmy_y
8 Replies

8. Shell Programming and Scripting

grep and display lines from a file

I have to grep on a few words in a file and then display the line containing those words and the line above it. For ex - File1.txt contains... abc xyz abc This is a test Test successful abc xyz abc Just a test Test successful I find the words 'Test successful' in the file... (6 Replies)
Discussion started by: user7617
6 Replies

9. Shell Programming and Scripting

How to grep all lines from a file NOT having a certain character

Hi, I have for instance following INPUT file from which I want to grep ALL lines NOT containing the literal '{' into an OUTPUT file: ... RUNJOB=1,AxBxALLxGEx RUNJOB=0,AxBxDELxGExPRAEMxABLxZGS RUNJOB=0,AxBxDELxGExPRAEMxHARM RUNJOB=0,{UNIX: echo '§ASG§;%ASG_START}... (8 Replies)
Discussion started by: ABE2202
8 Replies

10. Shell Programming and Scripting

Grep multiple lines from a file

Hi, I would like to ask if there is any method to grep a chuck of lines based on the latest file in a directory. E.g Latest file in the directory: Line 1: 532243 Line 2: 123456 Line 3: 334566 Line 4: 44567545 I wanted to grep all the line after line 2 i.e. Line 3 and line 4 and... (5 Replies)
Discussion started by: dwgi32
5 Replies
Login or Register to Ask a Question