Instead of duplicating a grep pattern with grep -oh after git grep like this: $ git grep -P '(?:[a-z0-9_]+_)?for_each(?:_[a-z0-9_]+)?' -- '*.[ch]' | \ grep -P -oh '(?:[a-z0-9_]+_)?for_each(?:_[a-z0-9_]+)?' it could be useful to have git grep have the same '-o' option as gnu grep.