Grep characters before and after match? Grep characters before and after match? bash bash

Grep characters before and after match?


3 characters before and 4 characters after

$> echo "some123_string_and_another" | grep -o -P '.{0,3}string.{0,4}'23_string_and


grep -E -o ".{0,5}test_pattern.{0,5}" test.txt 

This will match up to 5 characters before and after your pattern. The -o switch tells grep to only show the match and -E to use an extended regular expression. Make sure to put the quotes around your expression, else it might be interpreted by the shell.


You could use

awk '/test_pattern/ {    match($0, /test_pattern/); print substr($0, RSTART - 10, RLENGTH + 20);}' file