use*_*394 9 grep string text-processing
我希望在一个巨大的数据库转储中进行查找和替换,但它没有做我认为应该发生的事情。我想对文件中的目标字符串进行 grep,然后查看周围的 8 个字符左右(我可能需要调整该数字,具体取决于)。我怎样才能做到这一点?
我之所以无法关注这一点,是因为有数百个甚至数千个匹配项。我想在字符串周围获取一些字符,然后将其输入uniq或其他东西以查看为什么我的查找和替换有意外行为。
此外,同一行上可以有多个匹配项!
roz*_*acz 14
粗略的使用grep方式是这样的
grep -o "....yourtext...." /path/to/the/dump.sql
Run Code Online (Sandbox Code Playgroud)
点数对应于 grepped 文本之前/之后的字符数。该-o选项grep仅输出匹配项,而不是整行。
要uniq在输出上使用,请记住您必须先对输出进行排序。所以通常情况下,你会这样做
grep . . . | sort | uniq
Run Code Online (Sandbox Code Playgroud)
如果您对每场比赛的命中数感兴趣,您可以使用
grep . . . | sort | uniq -c | sort -n
Run Code Online (Sandbox Code Playgroud)
从@rozcietrzewiacz的回答开始,我可以扩展到
pattern="string"
num=8
grep -on ".\{0,$num\}$pattern.\{0,$num\}" input-file
Run Code Online (Sandbox Code Playgroud)