Confused with grep for multiple words


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Confused with grep for multiple words
# 1  
Old 04-03-2013
Confused with grep for multiple words

Hi guys and gals,

I have many files that contains many lines of data. I am trying to find a needle in a haystack in that I'm looking only for files that contain word1 AND word2.

I'm using ...

Quote:
egrep -l 'word1|word2'
...

but this is finding files that contains word1 OR word2. No good for me. How can I grep to find both words in a single file?

Thanks in advance.
# 2  
Old 04-03-2013
Code:
 awk '{if(f!=FILENAME){f=FILENAME;d=1}}/word1/&&d{p=1}/word2/&&d{q=1}p&&q&&d{print f;d=p=q=0}' input_files

So, this will print the file names once if word1 and word2 is found in any order.

--ahamed

Last edited by ahamed101; 04-03-2013 at 10:22 PM..
# 3  
Old 04-03-2013
Here is an alternate way:
Code:
grep -l word1 files.* > file_list
grep -l word2 files.* >> file_list
sort file_list | uniq -c | grep " 2 "

# 4  
Old 04-03-2013
Quote:
Originally Posted by ahamed101
Code:
 awk '{if(f!=FILENAME){f=FILENAME;d=1}}/word1/&&d{p=1}/word2/&&d{q=1}p&&q&&d{print f;d=p=q=0}' input_files

So, this will print the file names once if word1 and word2 is found in any order.

--ahamed
Nice one. Smilie That's a little more complicated than I was expecting. Will give it a go.

Thanks.

---------- Post updated at 09:34 PM ---------- Previous update was at 09:33 PM ----------

Quote:
Originally Posted by hanson44
Here is an alternate way:
Code:
grep -l word1 files.* > file_list
grep -l word2 files.* >> file_list
sort file_list | uniq -c | grep " 2 "


What does the " 2 " do in this?
# 5  
Old 04-03-2013
file_list will have file names which contain both word1 and word2 . i.e. if the file has both word1 and word2, then that file name will be present 2 times in the file_list.
uniq will give the count. So if the count is 2 or more, then it means both the words are present.

--ahamed
# 6  
Old 04-03-2013
Gotcha. Thanks.
# 7  
Old 04-04-2013
Code:
grep -w word1 files* > out1

-w option for searching the word

Last edited by Franklin52; 04-04-2013 at 03:19 AM.. Reason: Please use code tags for data and code samples
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep multiple words in a file with help of fixed string switch

I have multiple strings in a file which have special character $, when i search strings by ignoring $ with \ using single quotes it returns empty results. My search strings are set char_1($lock) and set new_char_clear_3($unlock) I tried searching with but it returns empty results.However... (3 Replies)
Discussion started by: g_eashwar
3 Replies

2. Shell Programming and Scripting

sed parser behaving strange on replacing multiple words in multiple files

I have 4000 files like $cat clus_grp_seq10_g.phy 18 1002 anig_OJJ65951_1 ATGGTTTCGCAGCGTGATAGAGAATTGTTTAGGGATGATATTCGCTCGCGAGGAACGAAGCTCAATGCTGCCGAGCGCGAGAGTCTGCTAAGGCCATATCTGCCAGATCCGTCTGACCTTCCACGCAGGCCACTTCAGCGGCGCAAGAAGGTTCCTCG aver_OOF92921_1 ... (1 Reply)
Discussion started by: sammy777888
1 Replies

3. Shell Programming and Scripting

Grep from multiple patterns multiple file multiple output

Hi, I want to grep multiple patterns from multiple files and save to multiple outputs. As of now its outputting all to the same file when I use this command. Input : 108 files to check for 390 patterns to check for. output I need to 108 files with the searched patterns. Xargs -I {} grep... (3 Replies)
Discussion started by: Diya123
3 Replies

4. Shell Programming and Scripting

Grep multiple words with not null value

Hi, I want to grep a file if any one (GH, IJ, KL) is not null. If it is null i dont want to pull anything. cat file | awk '{print ($1)}' Parameters are : AB=123;CD=456;EF=6789; cat file | awk '{print ($2)}' GH=456;IJ=789;KL=1011 eg: Contents in file: Parameters are :... (10 Replies)
Discussion started by: Neethu
10 Replies

5. Shell Programming and Scripting

grep - Extracting multiple key words from stdout

Hello. From command line, the command zypper info nxclient return a bloc of data : linux local # zypper info nxclient Loading repository data... Reading installed packages... Information for package nxclient: Repository: zypper_local Name: nxclient Version: 3.5.0-7 Arch: x86_64... (7 Replies)
Discussion started by: jcdole
7 Replies

6. Shell Programming and Scripting

Grep multiple words in a single file

Hello All, I'm a newbie/rookie in Shell scipting. I've done oracle export of a table using Export utility. When I do export, it generates 2 files. 1> .dmp file 2> .dmp.log file. In .dmp.log file I have to search for a sentence which goes like '0 records have been inserted' and then... (2 Replies)
Discussion started by: samfisher
2 Replies

7. Shell Programming and Scripting

grep multiple words in a single line

Hi.. How to search for multiple words in a single line using grep?. Eg: Jack and Jill went up the hill Jack and Jill were best friends Humpty and Dumpty were good friends too ---------- I want to extract the 2nd statement(assuming there are several statements with... (11 Replies)
Discussion started by: anduzzi
11 Replies

8. UNIX for Dummies Questions & Answers

search multiple words using grep

Hi frnds i want to desplay file names that should be word1 and word2 ex : i have 10 *.log files 5 files having word1 and word2 5 files having only word1, i have used below command egrep -l 'word1|word2' *.log its giving all 10 files, but i want to display only 5... (20 Replies)
Discussion started by: pb18798
20 Replies

9. UNIX for Dummies Questions & Answers

Grep Three Words

I have been trying to find files containing the words AAA, BBB and CCC. I tried: grep AAA `grep BBB files*` grep CCC files* but is does not work I tried several ways this is an easy one but I am a dummy, Does anyone can help me? Thanks :( (12 Replies)
Discussion started by: murbina
12 Replies

10. Shell Programming and Scripting

grep on multiple words to match text template

hi, I have few text templates as a simple ex: template 1 city Name: zip code: state Name: template2: employee Name: Phone number: I wish to grep on given text file and make sure the text file matches one of these templates. Please give your ideas. (6 Replies)
Discussion started by: rider29
6 Replies
Login or Register to Ask a Question