匹配之前和之后的Grep字符?

使用这个:

grep -A1 -B1 "test_pattern" file

将在文件中的匹配模式之前和之后产生一行。 有没有办法显示行,但显示指定数量的字符?

我的文件中的行很大,所以我不打算打印整行,而只是观察上下文中的匹配。 有关如何做到这一点的任何建议?


之前3个字符和之后4个字符

$> 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 

这将在您的模式前后匹配最多5个字符。 -o开关告诉grep只显示匹配,-E使用扩展正则表达式。 确保将引号放在表达式中,否则它可能会被shell解释。


你可以使用

awk '/test_pattern/ {
    match($0, /test_pattern/); print substr($0, RSTART - 10, RLENGTH + 20);
}' file
链接地址: http://www.djcxy.com/p/19647.html

上一篇: Grep characters before and after match?

下一篇: Grep match only specific lines, but keep context