grep is a Linux utility generally utilized for browsing file contents, or any enter handed to it. When hunting by way of various documents, it’s beneficial to screen the filename and line quantities, in particular when employing it to automate in shells scripts.
Displaying Filenames With grep
By default, if you pass multiple information to
grep, it will screen
filename: before the matching line for clarity. You can essentially switch this behavior off with the
-h flag, which will by no means display screen filenames:
Having said that, if you only move 1 file into
grep, it won’t exhibit the filenames by default. This can be a trouble when automating with shell scripts, as you might not know how many files are in a directory, and it may crack automation relying on the file name becoming there.
The straightforward take care of is to use the uppercase
-H flag, which does the opposite of
-h and will normally change on the filenames no matter what, even with only one particular file handed as input.
grep -H "foo" file
-H flag has an additional unpredicted but handy effect—when paired with input from
stdin, this sort of as Unix pipes, it will print
(common input): in location of the filename.
Exhibiting Line Figures With grep
You can also use it in conjunction with the
-n flag to get the line selection:
grep -Hn "foo"
A POSIX Compliant Hack
-H flag in
grep is not POSIX compliant and is not obtainable some much more obscure Unix-primarily based running units. The good news is, there’s a hack you can use, by passing
/dev/null as a phony 2nd file enter to
grep, which methods it into contemplating there are numerous files: