grep 匹配前后 20 个字符

grep 匹配前后 20 个字符

我遇到的问题是我在比赛后获得了太多信息

grep -RnisI --color=auto "pseudomonas" *

我只想在比赛前后获取 20 个字符或 10 个单词。

做这样的事情的正确工具是什么?

答案1

cat file.txt | grep -o -P '.{0,20}string.{0,20}'

这应该适合你

更新:

如果你不想 cat,你可以使用 grep 并以文件作为参数:

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

另外,-P 使用 Perl Regex,手册页说这是实验性的,如果你想避免该标志,你可以使用egrep代替:

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

答案2

pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

假设匹配且它们的上下文不重叠并且文件名不包含pseudomonas.

另请注意,报告的行号是上下文开头的行号。

相关内容