6

I'd like to tail a log file that's continuously being written to but would like to exclude various entries that are 'common' so I only see errors, etc. as they are thrown. I can pipe to grep -v "pattern" but would ideally like to use a file containing entries to skip. Any ideas?

0

5 Answers 5

7

You can use grep -v "pattern" like you said. But instead of pattern use

`cat file_with_entires_to_skip`

Remember to include the backtics. So your command would look like:

tail -v FILE | grep -v "`cat FILE_WITH_ENTRIES_TO_SKIP`"
2
  • Make that grep -v "cat FILE_WITH_ENTRIES_TO_SKIP", or the shell will expand special characters in the pattern list. Oct 8, 2010 at 23:29
  • You mean grep -v "`cat FILE_WITH_ENTIRES_TO_SKIP`"? (You have to escape backtics in Markdown.)
    – Wuffers
    Oct 8, 2010 at 23:33
2

The -f option to grep allows one to specify a file containing patterns, one pattern per line. See the grep(1) man page.

In addition, the unbuffer command available on some systems will disable the output buffering that normally occurs in pipelines. The addition of the grep filter may otherwise delay the output of your pipeline. See the unbuffer(1) man page for details.

2
  • You might mention that you need both -f and -v for the given requirements. Jan 30, 2013 at 13:35
  • 1
    It sounds like they are looking to exclude specific results, not patterns, so a fixed-string search (-F) would be more appropriate. I'd go with tail -v [file_to_tail] | grep -Fvf [file_with_list_of_lines_to_exclude] Oct 30, 2017 at 17:09
1

My grep includes an --exclude-from=FILE option that lets me add exclusion patterns from a file. I've got:

my-macbook-pro:Sun America ianchesal$ grep --version
grep (GNU grep) 2.5.1

So you could do:

tail -f <file> | grep --exclude-from=excludes.txt
1
  • 1
    "Skip files whose base name matches any of the file-name globs read from FILE (using wildcard matching as described under --exclude)." So it's for skipping files, not matches Nov 30, 2012 at 1:21
0

Use grep -f FILE and it will obtain patterns from that file. See the man page for more information.

0

Try using: grep -v -f EXCLUDE_FILENAME_LIST TARGET_FILENAME

EXCLUDE_FILENAME_LIST = List of words you want to grep out of your search TARGET_FILENAME = The Primary file you wish to grep

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .