user2398188
user2398188

Reputation: 1477

Output grep results to text file, need cleaner output

When using the Grep command to find a search string in a set of files, how do I dump the results to a text file?

Also is there a switch for the Grep command that provides cleaner results for better readability, such as a line feed between each entry or a way to justify file names and search results?

For instance, a away to change...

./file/path: first result
./another/file/path: second result
./a/third/file/path/here: third result

to

./file/path: first result

./another/file/path: second result

./a/third/file/path/here: third result

Upvotes: 123

Views: 517995

Answers (3)

Nir Alfasi
Nir Alfasi

Reputation: 53525

grep -n "YOUR SEARCH STRING" * > output-file

The -n will print the line number and the > will redirect grep-results to the output-file.
If you want to "clean" the results you can filter them using pipe | for example:
grep -n "test" * | grep -v "mytest" > output-file will match all the lines that have the string "test" except the lines that match the string "mytest" (that's the switch -v) - and will redirect the result to an output file.
A few good grep-tips can be found in this post

Upvotes: 157

dan
dan

Reputation: 61

To add a blank line between lines of text in grep output to make it easier to read, pipe (|) it through sed:

grep text-to-search-for file-to-grep | sed G

Upvotes: 6

Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Reputation: 798646

Redirection of program output is performed by the shell.

grep ... > output.txt

grep has no mechanism for adding blank lines between each match, but does provide options such as context around the matched line and colorization of the match itself. See the grep(1) man page for details, specifically the -C and --color options.

Upvotes: 46

Related Questions