grep a file, but show several surrounding lines?
I would like to grep
for a string, but also show the preceding five lines and the following five lines as well as the matched line. How would I be able to do this?
Solution 1:
For BSD or GNU grep
you can use -B num
to set how many lines before the match and -A num
for the number of lines after the match.
grep -B 3 -A 2 foo README.txt
If you want the same number of lines before and after you can use -C num
.
grep -C 3 foo README.txt
This will show 3 lines before and 3 lines after.
Solution 2:
-A
and -B
will work, as will -C n
(for n
lines of context), or just -n
(for n
lines of context... as long as n is 1 to 9).
Solution 3:
ack works with similar arguments as grep, and accepts -C
. But it's usually better for searching through code.
Solution 4:
grep astring myfile -A 5 -B 5
That will grep "myfile" for "astring", and show 5 lines before and after each match