Grep mutiple patterns with 'AND' operator


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep mutiple patterns with 'AND' operator
# 8  
Old 12-01-2011
Try

Code:
find /var/www/hrmtest/cache/upload/*.doc -exec sh -c 'egrep -l --ignore-case "Master en Achats" $1 | xargs egrep -l --ignore-case "complet"' {} {} \;

or
Code:
find /var/www/hrmtest/cache/upload/*.doc | xargs egrep -l --ignore-case "Master en Achats" | xargs egrep -l --ignore-case "complet"

# 9  
Old 12-01-2011
It's working! :)

Smilie Thanks anchal_khare Smilie

Smilie I won't be fired.
# 10  
Old 12-01-2011
if you always expect the Master en Achats comes first and complet comes second

then you can try

Master en Achats.*complet
# 11  
Old 12-01-2011
Hi,
sjolicoeur

please try this code it will work
Code:
$ find /var/www/mysite/uploads/files/*.doc -exec egrep -liw "Master en Achats|complet" {} \;

Regards
Debasis

Moderator's Comments:
Mod Comment How to use code tags

Last edited by sdebasis; 12-01-2011 at 08:51 AM.. Reason: Please use code tags for code and data samples, thank you
# 12  
Old 12-01-2011
Similar idea to anchal_khare . Search each file twice if necessary.

Code:
find /var/www/hrmtest/cache/upload/ -type f -name '*.doc' | while read filename
do
     egrep -l --ignore-case "Master en Achats" "${filename}"; FOUND1=$?
     # Leave the loop if we don't find the first string
     if [ "${FOUND1}" -ne 0 ]
     then
                 continue
     fi
     #
     egrep -l --ignore-case "complet" "${filename}"; FOUND2=$?
     # Leave the loop if we don't find the second string	
     if [ $FOUND2 -ne 0 ]
     then
            continue
     fi
     # Report matching file matching both conditions
     echo "${filename}"
done

If these files are Microsoft Word format document the process is not reliable. The "egrep" program is only suitable for searching unix format ascii text files where each record are of a reasonable length and terminated with a line-feed character.
A Microsoft Word document is not like this. Even a "space" character can be a non-ascii character.

Last edited by methyl; 12-01-2011 at 08:21 AM.. Reason: Better "find" command.
# 13  
Old 12-01-2011
How about this:
Code:
$ find /var/www/mysite/uploads/files/*.doc \ |
while read fname
do
     egrep -l --ignore-case "Master en Achats" "${fname}" | egrep -l --ignore-case "complet"
done

EDIT: Forget it! This one will not work! Smilie
# 14  
Old 12-01-2011
@felipe.vinturin
I'm afraid that your script contains the same mistake as several earlier attempts in this thread.
A "grep -l" outputs a filename. The second "grep -l" in your script will look for a filename containing the string "complet".
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to use grep with multiple patterns?

I am trying to grep a variable with multiple lines with multiple patterns below is the pattern list in a variable called "grouplst", each pattern is speerated by "|" grouplst="example1|example2|example3|example4|example5|example6|example7" I need to use the patterns above to grep a... (2 Replies)
Discussion started by: ajetangay
2 Replies

2. Shell Programming and Scripting

Grep patterns

Hi Experts, I have a log file like this.I need to filter the Index name and elapsed time(only created ). 06:36:39 SQL> create index XYZ_F75 on XYZ 06:36:39 2 ("GRP_ID", "_ID") parallel 64 nologging 06:36:39 3 tablespace XARGS_IDX 06:36:39 4 ; Index created. Elapsed:... (2 Replies)
Discussion started by: navsan420
2 Replies

3. UNIX for Dummies Questions & Answers

Grep - various patterns

I have a file with the following text: grep \$ grep \\$ grep \\\$ grep '\$' grep '\'$' grep \\ grep \\\\ grep "\$" grep '"$' grep "$" When I perform these same commands on this file, the result are never what I would expect them to be. Could someone please comment on the results and... (3 Replies)
Discussion started by: uran101
3 Replies

4. Shell Programming and Scripting

grep value between two patterns

Hi All, I've been trying solve this with a simple command but not having much luck. I have a file like this: Line 1: random_description 123/alert/high random_description2 356/alert/slow Line 2: random_description3 654/alert/medium Line 3: random_description4 234/alert/critical I'm... (7 Replies)
Discussion started by: joe19
7 Replies

5. Shell Programming and Scripting

grep for multiple patterns

I have a file with many rows. I want to grep for multiple patterns from the file. For eg: XX=123|YY=222|ZZ=566 AA=123|EE=222|GG=566 FF=123|RR=222|GG=566 DD=123|RR=222|GG=566 I want the lines which has both XX and ZZ. I know I can get it like this. grep XX file | grep YY But... (10 Replies)
Discussion started by: tene
10 Replies

6. Shell Programming and Scripting

grep or sed patterns

i want to match a pattern * ^Subject:.*<\hello\> for my emails to me that has 'hello' anywhere in the subject. (3 Replies)
Discussion started by: oxoxo
3 Replies

7. Shell Programming and Scripting

Grep All lines between 2 different patterns

I need a simple script to get all lines between 2 Patterns, e.g. ............. ............. 114456723: testing Script Alpha Beta 114459234: testing Done ............. ............. It should give all the lines in between 114456723 and 114459234, including these as well. Any... (2 Replies)
Discussion started by: gurpreet470
2 Replies

8. UNIX for Dummies Questions & Answers

Searching mutiple word - Tuning grep command

Hi all, I have a log file which is more than 1GB, i need to take count from the log file for two strings. i am using the below command but it take a long time to excetue, i need to tune this. Please help me cat /logs/gcbs/gcbsTrace.log | grep -i "ViewStatementBusinessLogic" | grep -c -i... (8 Replies)
Discussion started by: senthilkumar_ak
8 Replies

9. Shell Programming and Scripting

grep patterns - File

Hi I have 3 patterns for example to be searched. These three patterns are available in file1. The patterns to be searched are in file2. I want to search the pattern of file1 to file2. Can any one help with example? Regards Dhana (1 Reply)
Discussion started by: dhanamurthy
1 Replies

10. UNIX for Dummies Questions & Answers

grep for multiple patterns

I want to get a list of all the files in the current directory that have two patterns. I can do first grep of one pattern and then with the output do the grep of the second pattern. if the output of 1st pattern search results in many files, it is very difficult to do a grep of the 2nd pattern for... (1 Reply)
Discussion started by: tselvanin
1 Replies
Login or Register to Ask a Question