Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use negative regex matching with grep -E? [duplicate]

Tags:

regex

grep

I'm using the following regex via grep -E to match a specific string of chars via | pipe.

$ git log <more switches here> | grep -E "match me"

Output:

match me once
match me twice

What I'm really looking for a is a negative match (return all output lines that don't contain the specified string something like the following but grep doesn't like it:

$ git log <more switches here> | grep -E "^match me"

desired output:

whatever 1
whatever 2

here is the full output that comes back from the command line:

match me once
match me twice
whatever 1
whatever 2

How to do arrive at the desired output per a negative regex match?

like image 750
genxgeek Avatar asked Jan 11 '23 12:01

genxgeek


1 Answers

Use the -v option which inverts the matches, selecting non-matching lines

grep -v 'match me'

Another option is to use -P which interprets the pattern as a Perl regular expression.

grep -P '^((?!match me).)*$'
like image 52
hwnd Avatar answered Jan 22 '23 10:01

hwnd