grep -f when the pattern file also has some empty lines

Is there any option of the grep command to suppress the effect of empty lines in the pattern file? I would prefer this option than always checking and filtering the nascent pattern file.

Here is an example (in pattern_file, there is an empty line):

$ cat pattern_file  
APPLE  

PEAR  
$ cat file  
Nothing  
fruit  
$ grep -f pattern_file file  
Nothing  
fruit

Upvotes: 2

Views: 721

Answers (3)

Cyrus
Cyrus

Reputation: 88674

To ignore empty lines in pattern file:

grep -f <(grep . pattern_file) file

Upvotes: 3

John_West
John_West

Reputation: 2399

About -f option:

A null pattern can be specified by an empty line in pattern_file.

So, it is a feature, and you should delete empty lines, e.g. with sed:

sed '/^$/d' | grep -f ...

Upvotes: 1

Simply Me
Simply Me

Reputation: 1587

grep -v '^$'

This actually grabs all the lines except for newlines. You can pipe the result to your grep like this: grep -v '^$'| otherGrep

Upvotes: 1

Related Questions