grep 匹配的周围字符

grep 匹配的周围字符

我希望在一个巨大的数据库转储中进行查找和替换,但它没有做我认为应该发生的事情。我想在文件中 grep 查找我的目标字符串,然后查看周围的 8 个字符左右(我可能需要调整该数字,具体取决于)。我怎样才能做到这一点?

我之所以无法关注这一点,是因为有数百甚至数千场比赛。我想获取字符串周围的一些字符,然后将其通过管道传输到uniq其他地方,以了解为什么我的查找和替换会出现意外行为。

此外,同一行上可以有多个匹配项!

答案1

粗略的使用方式grep是这样的

grep -o "....yourtext...." /path/to/the/dump.sql

点数对应于 grep 文本之前/之后的字符数。该-o选项使grep输出仅匹配,而不是整行。

uniq在输出上使用,请记住您必须首先对输出进行排序。所以通常情况下,你会这样做

grep . . . | sort | uniq

如果您对每场比赛的命中数感兴趣,您可以使用以下命令获得不错的输出

grep . . . | sort | uniq -c | sort -n

答案2

从@rozcietrzewiacz的回答开始,我可以扩展到

pattern="string"
num=8
grep -on ".\{0,$num\}$pattern.\{0,$num\}" input-file

相关内容