49

When I use grep -o to search in multiple files, it outputs each result prefixed with the file name. How can I prevent this prefix? I want the results without the file names.

Ram Rachum
  • 1,825
  • 3
    From man grep -h, --no-filename Suppress the prefixing of filenames on output when multiple files are searched. – rahul May 20 '15 at 14:29

2 Answers2

78

With the GNU implementation of grep (the one that also introduced -o) or compatible, you can use the -h option.

-h, --no-filename
          Suppress the prefixing of file names on  output.   This  is  the
          default  when there is only one file (or only standard input) to
          search.

With other implementations, you can always concatenate the files with cat and grep that output:

cat ./*.txt | grep regexp

Or use sed or awk instead of grep:

awk '/regexp/' ./*.txt

(extended regexps like with grep -E).

sed '/regexp/!d/' ./*.txt

(basic regexps like with grep without -E. Many sed implementations now also support a -E option for extended regexps).

sergut
  • 1,969
1

With git grep, use the -h option to suppress file names:

git grep -h <pattern>

Note that the option --no-filename doesn't work with git grep.