How to grep multiple lines from a text file using another text file?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to grep multiple lines from a text file using another text file?
# 1  
Old 03-06-2012
How to grep multiple lines from a text file using another text file?

I would like to use grep to select multiple lines from a text file using a single-column text file. Basically I want to only select lines from the first text file where the second column of the first text file matches the second text file. How do I go about doing that? Thanks!
# 2  
Old 03-06-2012
Can you show an example?

Does this demonstrate how it can be done?
https://www.unix.com/shell-programmin...ther-file.html
# 3  
Old 03-06-2012
Sure:
1st text file:
Code:
1340 NA07022 0 0 1 -9 C C 0 0 0 0 0 0 G 
1340 NA07029 0 1 1 -9 C C 0 0 0 0 0 A T
1341 NA07034 0 0 1 -9 C C 0 0 0 0 0 0 G    
1341 NA07048 2 1 1 -9 0 0 0 0 0 0 0 G C
1341 NA07055 0 0 2 -9 C C 0 0 0 0 0 0 G

2nd text file:
Code:
NA07022
NA07055

Output:
Code:
1340 NA07022 0 0 1 -9 C C 0 0 0 0 0 0 G  
1341 NA07055 0 0 2 -9 C C 0 0 0 0 0 0 G


Last edited by Corona688; 03-06-2012 at 05:10 PM.. Reason: Code tags, please
# 4  
Old 03-06-2012
You're asking for tiny variations on nearly the exact same thing, over and over. If you learned the awk language, it would be very simple for you to slightly change all the things you've already been given, to do these things yourself.

You've also forgotten to post in code tags again.

Code:
awk 'NR==FNR { A[$1]=1; next }; A[$2]' file2 file1

This User Gave Thanks to Corona688 For This Post:
# 5  
Old 06-27-2012
How would I modify the code if instead of printing the rows that match, the output prints the rows that do not match so that the output looks like:

Code:
1340 NA07029 0 1 1 -9 C C 0 0 0 0 0 A T
1341 NA07034 0 0 1 -9 C C 0 0 0 0 0 0 G    
1341 NA07048 2 1 1 -9 0 0 0 0 0 0 0 G C

Thanks!
# 6  
Old 06-27-2012
Code:
~/unix.com$ grep -Ff f2 f1

The reverse:
Code:
~/unix.com$ grep -vFf f2 f1

In awk, based on Corona688's solution:
Code:
~/unix.com$ awk 'NR==FNR{A[$1]=1;next}A[$2]' f2 f1

The reverse:
Code:
~/unix.com$ awk 'NR==FNR{A[$1]=1;next}!A[$2]' f2 f1


Last edited by tukuyomi; 06-27-2012 at 04:06 PM.. Reason: Nitpick :p
This User Gave Thanks to tukuyomi For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Match text to lines in a file, iterate backwards until text or text substring matches, print to file

hi all, trying this using shell/bash with sed/awk/grep I have two files, one containing one column, the other containing multiple columns (comma delimited). file1.txt abc12345 def12345 ghi54321 ... file2.txt abc1,text1,texta abc,text2,textb def123,text3,textc gh,text4,textd... (6 Replies)
Discussion started by: shogun1970
6 Replies

2. Shell Programming and Scripting

Join multiple lines from text file

Hi Guys, Could you please advise how to join multiple details lines into single row, with HEADER 1 as the record separator and comma(,) as the field separator. Input: HEADER 1, HEADER 2, HEADER 3, 11,22,33, COLUMN1,COLUMN2,COLUMN3, AA1, BB1, CC1, END: ABC HEADER 1, HEADER 2,... (3 Replies)
Discussion started by: budz26
3 Replies

3. Shell Programming and Scripting

Remove multiple lines from a text file

Hi I have a text file named main.txt with 10,000 lines. I have another file with a list of line numbers (around 1000) of the lines to be deleted from main.txt file. I tried with sed but it removes only a range of line numbers. Thanks for any help!! (1 Reply)
Discussion started by: prvnrk
1 Replies

4. Shell Programming and Scripting

Process multiple lines in a text file

Hi All I have text file like this: a=21ej c=3tiu32 e=hydkehw f=hgdiuw g=jhdkj a=klkjhvl b=dlkjhyfd a=yo c=8732 Any way I can process data from first a to just before of second a, and then second a to just before of 3rd one. Just fetching records like that will help, I mean... (3 Replies)
Discussion started by: sandipjee
3 Replies

5. Shell Programming and Scripting

Extracting Multiple Lines from a Text File

Hello. I am sorry if this is a common question but through all my searching, I haven't found an answer which matches what I want to do. I am looking for a sed command that will parse through a large text file and extract lines that start with specific words (which are repeated throughout the... (4 Replies)
Discussion started by: MrDumbQuestion
4 Replies

6. UNIX for Dummies Questions & Answers

How to generate multiple lines in a text file?

Hello, I want to create a file whose content is multiple lines of strings. The string has the following pattern: aaaa/bbbb/A-B.txt A is a variable ranges from A1 to A2 B is a variable ranges from B1 to B2 Any ideas? Thanks. (17 Replies)
Discussion started by: vic005
17 Replies

7. UNIX for Dummies Questions & Answers

Help please, extract multiple lines from a text file

Hi all, I need to extract lines between the lines 'RD' and 'QA' from a text file (following). there are more that one of such pattern in the file and I need to extract all of them. however, the number of lines between them is varied in the file. Therefore, I can not just use 'grep -A' command.... (6 Replies)
Discussion started by: johnshembb
6 Replies

8. Shell Programming and Scripting

[bash help]Adding multiple lines of text into a specific spot into a text file

I am attempting to insert multiple lines of text into a specific place in a text file based on the lines above or below it. For example, Here is a portion of a zone file. IN NS ns1.domain.tld. IN NS ns2.domain.tld. IN ... (2 Replies)
Discussion started by: cdn_humbucker
2 Replies

9. UNIX for Dummies Questions & Answers

removing multiple lines of text in a file

Hi, I'm trying to remove multiple lines of text based off a series of different words and output it to a new file The document contains a ton of data but i want to delete any line that has the following mx1.rr.biz.com or ns2.ri.biz.com i tried using grep -v filename "mx1.rr.biz.com" >... (3 Replies)
Discussion started by: spartan22
3 Replies

10. UNIX for Dummies Questions & Answers

grep multiple text files in folder into 1 text file?

How do I use the grep command to take mutiple text files in a folder and make one huge text file out of them. I'm using Mac OS X and can not find a text tool that does it so I figured I'd resort to the BSD Unix CLI for a solution... there are 5,300 files that I want to write to one huge file so... (7 Replies)
Discussion started by: coppertone
7 Replies
Login or Register to Ask a Question